<template>
  <Drawer :value="visible" :closable="true" :styles="{ padding: '0 0 60px' }" width="1000"
    @on-visible-change="drawerChange">
    <div class="header">
      <Icon custom="iconfont iconmanjianmanzhe" size="60" />
      <div>
        <div class="title">{{ formValidate.store_name }}</div>
        <div>商品ID：{{ productId }}</div>
      </div>
    </div>
    <Tabs v-model="currentTab">
      <TabPane v-for="item in headTab" :key="item.name" :label="item.title" :name="item.name">
      </TabPane>
    </Tabs>
    <Form class="formValidate" ref="formValidate" :model="formValidate" :label-width="labelWidth"
      :label-position="labelPosition" @submit.native.prevent>
      <Row type="flex" v-show="currentTab === '1'">
        <!-- 商品信息-->
        <Col span="24">
        <FormItem label="商品类型：" props="is_virtual">
          <RadioGroup v-model="formValidate.product_type">
            <Radio v-for="item in productType" :key="item.id" :label="item.id" disabled>{{ item.name }}</Radio>
          </RadioGroup>
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="商品分类：" prop="cate_id">
          <el-cascader placeholder="请选择商品分类" v-width="'50%'" size="mini" v-model="formValidate.cate_id"
            :options="treeSelect" :props="props" filterable clearable>
          </el-cascader>
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="商品名称：" prop="store_name">
          <Input v-model="formValidate.store_name" placeholder="请输入商品名称" v-width="'50%'" />
        </FormItem>
        </Col>
        <Col span="24" class="brandName">
        <FormItem label="商品品牌：" prop="">
          <Cascader :data="brandData" placeholder="请选择商品品牌" change-on-select v-model="formValidate.brand_id" filterable
            v-width="'50%'"></Cascader>
          <!-- <span class="addClass" @click="addBrand">新增品牌</span> -->
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="单位：" prop="unit_name">
          <Select v-model="formValidate.unit_name" clearable filterable v-width="'50%'" placeholder="请输入单位">
            <Option v-for="(item, index) in unitNameList" :value="item.name" :key="index">{{ item.name }}</Option>
          </Select>
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="商品编码：" prop="">
          <Input v-model="formValidate.code" placeholder="请输入商品编码" v-width="'50%'" />
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="商品轮播图：" prop="slider_image">
          <div class="acea-row">
            <div class="pictrue" v-for="(item, index) in formValidate.slider_image" :key="index" draggable="true"
              @dragstart="handleDragStart($event, item)" @dragover.prevent="handleDragOver($event, item)"
              @dragenter="handleDragEnter($event, item)" @dragend="handleDragEnd($event, item)">
              <img v-lazy="item" />
              <Button shape="circle" icon="md-close" @click.native="handleRemove(index)" class="btndel"></Button>
            </div>
            <div v-if="formValidate.slider_image.length < 10" class="upLoad acea-row row-center-wrapper"
              @click="modalPicTap('duo')">
              <Icon type="ios-camera-outline" size="26" />
            </div>
            <Input v-model="formValidate.slider_image[0]" class="input-display"></Input>
          </div>
          <div class="tips">
            建议尺寸：800
            *800px，可拖拽改变图片顺序，默认首张图为主图，最多上传10张
          </div>
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="商品标签：" prop="store_label_id" class="labelClass">
          <div class="acea-row row-middle">
            <div class="labelInput acea-row row-between-wrapper" @click="openStoreLabel">
              <div v-if="storeDataLabel.length">
                <Tag closable v-for="(item, index) in storeDataLabel" :key="index" @on-close="closeStoreLabel(item)">{{
                    item.label_name
                }}</Tag>
              </div>
              <span class="span" v-else>选择商品标签</span>
            </div>
          </div>
        </FormItem>
        </Col>
       <!-- <Col span="24">
        <FormItem label="供应商：" prop="supplier_id" v-if="formValidate.product_type == 0">
          <Select v-model="formValidate.supplier_id" clearable filterable v-width="'50%'" placeholder="请选择供应商">
            <Option v-for="(item, index) in supplierList" :value="item.id" :key="index">{{ item.supplier_name }}
            </Option>
          </Select>
        </FormItem>
        </Col> -->
        <Col span="24">
        <FormItem label="添加视频：">
          <i-switch v-model="formValidate.video_open" size="large">
            <span slot="open">开启</span>
            <span slot="close">关闭</span>
          </i-switch>
        </FormItem>
        </Col>
        <Col span="24" v-if="formValidate.video_open">
        <FormItem label="视频类型：">
          <RadioGroup v-model="seletVideo" @on-change="changeVideo">
            <Radio :label="0" class="radio">本地视频</Radio>
            <Radio :label="1">视频链接</Radio>
          </RadioGroup>
        </FormItem>
        </Col>
        <Col span="24" v-if="formValidate.video_open">
        <FormItem label="" prop="video_link">
          <Input v-if="seletVideo == 1 && !formValidate.video_link" v-width="'50%'" v-model="videoLink"
            placeholder="请输入视频链接" />
          <input type="file" ref="refid" @change="zh_uploadFile_change" class="input-display" />
          <div v-if="
            seletVideo == 0 &&
            (upload_type !== '1' || videoLink) &&
            !formValidate.video_link
          " class="ml10 videbox" @click="zh_uploadFile">
            +
          </div>
          <Button v-if="
            seletVideo == 1 &&
            (upload_type !== '1' || videoLink) &&
            !formValidate.video_link
          " type="primary" icon="ios-cloud-upload-outline" class="uploadVideo" @click="zh_uploadFile">确认添加</Button>
          <Upload v-if="upload_type === '1' && !formValidate.video_link" :show-upload-list="false" :action="fileUrl2"
            :before-upload="videoSaveToUrl" :data="uploadData" :headers="header" :multiple="true"
            style="display: inline-block">
            <div v-if="seletVideo === 0 && !formValidate.video_link" class="videbox">
              +
            </div>
          </Upload>
          <div class="iview-video-style" v-if="formValidate.video_link">
            <video class="video-style" :src="formValidate.video_link" controls="controls">
              您的浏览器不支持 video 标签。
            </video>
            <div class="mark"></div>
            <Icon type="ios-trash-outline" class="iconv" @click="delVideo" />
          </div>
          <Progress class="progress" :percent="progress" :stroke-width="5" v-if="upload.videoIng || videoIng" />
          <div class="tips">建议时长：9～30秒，视频宽高比16:9</div>
        </FormItem>
        </Col>
        <Col span="24" class="goodsShow">
        <FormItem label="上架时间：">
          <RadioGroup v-model="formValidate.is_show" @on-change="goodsOn">
            <Radio :label="1">
              <Icon type="social-apple"></Icon>
              <span>立即上架</span>
            </Radio>
            <Radio :label="2">
              <Icon type="social-android"></Icon>
              <span>定时上架</span>
            </Radio>
            <Radio :label="0">
              <Icon type="social-windows"></Icon>
              <span>放入仓库</span>
            </Radio>
          </RadioGroup>
        </FormItem>
        </Col>
        <Col span="24" v-if="formValidate.is_show == 2">
        <FormItem label="">
          <DatePicker type="datetime" @on-change="onchangeShow" :options="startPickOptions"
            :value="formValidate.auto_on_time" v-model="formValidate.auto_on_time" placeholder="请选择上架时间"
            format="yyyy-MM-dd HH:mm" style="width: 260px"></DatePicker>
        </FormItem>
        </Col>
        <Col span="24" class="goodsShow">
        <FormItem label="定时下架：">
          <Switch v-model="off_show" :true-value="1" :false-value="0" size="large" @on-change="goodsOff">
            <span slot="open">开启</span>
            <span slot="close">关闭</span>
          </Switch>
        </FormItem>
        </Col>
        <Col span="24" v-if="off_show == 1">
        <FormItem label="">
          <DatePicker type="datetime" @on-change="onchangeOff" :options="endPickOptions"
            :value="formValidate.auto_off_time" v-model="formValidate.auto_off_time" placeholder="请选择下架时间"
            format="yyyy-MM-dd HH:mm" style="width: 260px"></DatePicker>
          <div class="tips">
            开启定时下架后，系统会在设置时间下架该商品。下架时间需晚于开售时间，商品才能定时开售。
          </div>
        </FormItem>
        </Col>
      </Row>
      <Row :gutter="24" type="flex" v-show="currentTab === '2'">
        <Col span="24" v-if="formValidate.product_type != 4">
        <FormItem label="商品规格：" props="spec_type">
          <RadioGroup v-model="formValidate.spec_type" @on-change="changeSpec">
            <Radio :label="0" class="radio">单规格</Radio>
            <Radio :label="1">多规格</Radio>
          </RadioGroup>
        </FormItem>
        </Col>
        <!-- 多规格添加-->
        <Col span="24" v-if="formValidate.spec_type === 1 && formValidate.product_type != 4" class="noForm">
        <Col span="24">
        <FormItem label="选择规格：" prop="">
          <div class="acea-row row-middle">
            <Select v-model="formValidate.selectRule" style="width: 23%">
              <Option v-for="(item, index) in ruleList" :value="item.rule_name" :key="index">{{ item.rule_name }}
              </Option>
            </Select>
            <Button type="primary" class="mr20" @click="confirm">确认</Button>
            <Button @click="addRule">添加规格模板</Button>
          </div>
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem v-if="attrs.length !== 0">
          <draggable class="dragArea list-group" :list="attrs" group="peoples" handle=".move-icon" :move="checkMove"
            @end="end">
            <div v-for="(item, index) in attrs" :key="index" class="acea-row row-middle mb10">
              <div class="move-icon">
                <span class="iconfont icondrag2"></span>
              </div>
              <div style="width: 90%" :class="moveIndex === index ? 'borderStyle' : ''">
                <div class="acea-row row-middle">
                  <span class="mr5">{{ item.value }}</span>
                  <Icon type="ios-close-circle" size="14" class="curs" @click="handleRemoveRole(index)" />
                </div>
                <div class="rulesBox">
                  <draggable :list="item.detail" handle=".drag">
                    <Tag type="dot" closable color="primary" v-for="(j, indexn) in item.detail" :key="indexn" :name="j"
                      class="mr20 drag" @on-close="handleRemove2(item.detail, indexn)">{{ j }}</Tag>
                  </draggable>
                  <Input search enter-button="添加" placeholder="请输入属性名称" v-model="item.detail.attrsVal"
                    @on-search="createAttr(item.detail.attrsVal, index)" class="width-add" />
                </div>
              </div>
            </div>
          </draggable>
        </FormItem>
        </Col>
        <Col span="24" v-if="createBnt">
        <FormItem>
          <Button type="primary" icon="md-add" @click="addBtn" class="mr15">添加新规格</Button>
          <Button type="success" @click="generate(1)">立即生成</Button>
        </FormItem>
        </Col>
        <Col span="24" v-if="showIput">
        <Col :xl="6" :lg="9" :md="10" :sm="24" :xs="24">
        <FormItem label="规格：">
          <Input placeholder="请输入规格" v-model="formDynamic.attrsName" />
        </FormItem>
        </Col>
        <Col :xl="6" :lg="9" :md="10" :sm="24" :xs="24">
        <FormItem label="规格值：">
          <Input v-model="formDynamic.attrsVal" placeholder="请输入规格值" />
        </FormItem>
        </Col>
        <Col :xl="6" :lg="5" :md="10" :sm="24" :xs="24">
        <FormItem>
          <Button type="primary" class="mr15" @click="createAttrName">确定</Button>
          <Button @click="offAttrName">取消</Button>
        </FormItem>
        </Col>
        </Col>
        <!-- 多规格设置-->
        <Col :xl="24" :lg="24" :md="24" :sm="24" :xs="24" v-if="
          manyFormValidate.length &&
          formValidate.header.length !== 0 &&
          attrs.length !== 0
        ">
        <!-- 批量设置-->
        <Col span="24">
        <FormItem label="批量设置：" class="labeltop">
          <Table :data="oneFormBatch" :columns="
            formValidate.product_type == 1
              ? columnsCarMy
              : formValidate.product_type == 3
                ? columnsFictitious
                : columns2
          " border>
            <template slot-scope="{ row, index }" slot="attr">
              <div @click="batchAttr" class="acea-row row-between-wrapper" style="cursor: pointer">
                <div style="width: 41px">{{ oneFormBatch[0].attr }}</div>
                <span class="iconfont icondrop-down"></span>
              </div>
            </template>
            <template slot-scope="{ row, index }" slot="pic">
              <div class="acea-row row-middle row-center-wrapper" @click="modalPicTap('dan', 'duopi', index)">
                <div class="pictrue pictrueTab" v-if="oneFormBatch[0].pic">
                  <img v-lazy="oneFormBatch[0].pic" />
                </div>
                <div class="upLoad pictrueTab acea-row row-center-wrapper" v-else>
                  <Icon type="ios-camera-outline" size="26" class="iosfont" />
                </div>
              </div>
            </template>
            <template slot-scope="{ row, index }" slot="price">
              <InputNumber v-model="oneFormBatch[0].price" :min="0" class="priceBox"></InputNumber>
            </template>
			<template slot-scope="{ row, index }" slot="settle_price" v-if='merchantType == 2'>
			  <InputNumber
			      v-model="oneFormBatch[0].settle_price"
			      :min="0"
			      class="priceBox"
			  ></InputNumber>
			</template>
            <template slot-scope="{ row, index }" slot="cost">
              <InputNumber v-model="oneFormBatch[0].cost" :min="0" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="ot_price">
              <InputNumber v-model="oneFormBatch[0].ot_price" :min="0" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="stock">
              <InputNumber v-model="oneFormBatch[0].stock" :min="0"
                :disabled="formValidate.product_type == 1 || openErp" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="bar_code">
              <Input v-model="oneFormBatch[0].bar_code"></Input>
            </template>
            <template slot-scope="{ row, index }" slot="code">
              <Input v-model="oneFormBatch[0].code"></Input>
            </template>
            <template slot-scope="{ row, index }" slot="weight">
              <InputNumber v-model="oneFormBatch[0].weight" :step="0.1" :min="0" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="volume">
              <InputNumber v-model="oneFormBatch[0].volume" :step="0.1" :min="0" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="fictitious" v-if="formValidate.product_type == 1">
              <Button v-if="!row.virtual_list && !row.stock" @click="addVirtual(0, 'oneFormBatch')">添加卡密</Button>
              <span v-else class="seeCatMy" @click="seeVirtual(oneFormBatch[0], 'oneFormBatch', 0)">已设置</span>
            </template>
            <template slot-scope="{ row, index }" slot="action">
              <a @click="batchAdd">批量设置</a>
              <Divider type="vertical" />
              <a @click="batchDel">清空</a>
            </template>
          </Table>
        </FormItem>
        </Col>
        <!-- 多规格表格-->
        <Col span="24">
        <FormItem label="商品属性：" class="labeltop">
          <Table :data="manyFormValidate" :columns="formValidate.header" border>
            <template slot-scope="{ row, index }" v-for="(item, i) in attrData.length" :slot="'value' + (i + 1)">
              <div :class="manyFormValidate[index].select ? 'selectOn' : ''">
                {{ manyFormValidate[index]['value' + (i + 1)] }}
              </div>
            </template>
            <template slot-scope="{ row, index }" slot="pic">
              <div class="acea-row row-middle row-center-wrapper" @click="modalPicTap('dan', 'duoTable', index)">
                <div class="pictrue pictrueTab" v-if="manyFormValidate[index].pic">
                  <img v-lazy="manyFormValidate[index].pic" />
                </div>
                <div class="upLoad pictrueTab acea-row row-center-wrapper" v-else>
                  <Icon type="ios-camera-outline" size="21" />
                </div>
              </div>
            </template>
            <template slot-scope="{ row, index }" slot="price">
              <InputNumber v-model="manyFormValidate[index].price" :min="0" class="priceBox"></InputNumber>
            </template>
			<template slot-scope="{ row, index }" slot="settle_price" v-if="merchantType == 2">
			  <InputNumber
			      v-model="manyFormValidate[index].settle_price"
			      :min="0"
			      class="priceBox"
			  ></InputNumber>
			</template>
            <template slot-scope="{ row, index }" slot="cost">
              <InputNumber v-model="manyFormValidate[index].cost" :min="0" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="ot_price">
              <InputNumber v-model="manyFormValidate[index].ot_price" :min="0" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="stock">
              <InputNumber v-model="manyFormValidate[index].stock" :min="0" :precision="0"
                :disabled="formValidate.product_type == 1 || openErp" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="fictitious" v-if="formValidate.product_type == 1">
              <Button v-if="
                (!row.virtual_list || !row.virtual_list.length) &&
                !row.stock
              " @click="addVirtual(index, 'manyFormValidate')">添加卡密</Button>
              <span v-else class="seeCatMy" @click="seeVirtual(row, 'manyFormValidate', index)">已设置</span>
            </template>
            <template slot-scope="{ row, index }" slot="bar_code">
              <Input v-model="manyFormValidate[index].bar_code"></Input>
            </template>
            <template slot-scope="{ row, index }" slot="code">
              <Input v-model="manyFormValidate[index].code"></Input>
            </template>
            <template slot-scope="{ row, index }" slot="weight">
              <InputNumber v-model="manyFormValidate[index].weight" :min="0" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="volume">
              <InputNumber v-model="manyFormValidate[index].volume" :min="0" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="action">
              <a @click="delAttrTable(index)">删除</a>
            </template>
          </Table>
        </FormItem>
        </Col>
        </Col>
        </Col>
        <!-- 单规格表格-->
        <div v-if="formValidate.spec_type === 0 || formValidate.product_type == 4" style="width: 100%">
          <Col span="24" v-if="formValidate.product_type != 4">
          <FormItem label="图片：" prop="image">
            <div class="pictrueBox" @click="modalPicTap('dan', 'danTable', 0)">
              <div class="pictrue" v-if="oneFormValidate[0].pic">
                <img v-lazy="oneFormValidate[0].pic" />
              </div>
              <div class="upLoad acea-row row-center-wrapper" v-else>
                <Input v-model="oneFormValidate[0].pic" class="input-display"></Input>
                <Icon type="ios-camera-outline" size="26" />
              </div>
            </div>
          </FormItem>
          </Col>
		  <Col class="asterisk" span="24" v-if="formValidate.product_type == 4">
			<div class="asteriskInfo on2">*</div>
			<FormItem label="核销次数：">
			  <InputNumber
			      v-model="oneFormValidate[0].write_times"
			      :min="1"
			      :max="99999999"
			      :precision="0"
			      v-width="'50%'"
			      placeholder="请输入核销次数"
			  ></InputNumber>
			</FormItem>
		  </Col>
		  <Col span="24" v-if="formValidate.product_type == 4">
		    <FormItem required label="核销时效：">
		      <RadioGroup v-model="oneFormValidate[0].write_valid">
		        <Radio :label="1">永久有效</Radio>
		        <Radio :label="2">购买后几天有效</Radio>
		        <Radio :label="3">固定有效期</Radio>
		      </RadioGroup>
		    </FormItem>
		  </Col>
		  <Col span="24" v-if="oneFormValidate[0].write_valid==2">
		    <FormItem
		        label=""
		        prop="freight"
		    >
		      <div class="acea-row row-middle">
		        <InputNumber
		            :min="1"
		            v-model="oneFormValidate[0].days"
		            placeholder="请输入有效天数"
		            v-width="'50%'"
		        />
		        <span class="ml10">天</span>
		      </div>
		    </FormItem>
		  </Col>
		  <Col span="24" v-if="oneFormValidate[0].write_valid==3">
		    <FormItem
		        label=""
		        prop="freight"
		    >
		      <div class="acea-row row-middle">
		        <DatePicker :editable="false" type="daterange" format="yyyy-MM-dd" placeholder="请选择固定有效期"
		                    @on-change="onchangeTime" v-width="'50%'" :value="oneFormValidate[0].section_time" v-model="oneFormValidate[0].section_time"></DatePicker>
		      </div>
		    </FormItem>
		  </Col>
          <Col span="24" class="asterisk">
          <!-- <div class="asteriskInfo">*</div> -->
          <FormItem label="售价：">
            <InputNumber v-model="oneFormValidate[0].price" :min="0" :max="99999999" v-width="'50%'"></InputNumber>
          </FormItem>
          </Col>
		  <Col span="24" class="asterisk" v-if="merchantType == 2">
			<!-- <div class="asteriskInfo on">*</div> -->
			<FormItem label="结算价：">
			  <InputNumber
			      v-model="oneFormValidate[0].settle_price"
			      :min="0"
			      :max="99999999"
			      v-width="'50%'"
			  ></InputNumber>
			</FormItem>
		  </Col>
          <Col span="24" class="asterisk">
          <!-- <div class="asteriskInfo on">*</div> -->
          <FormItem label="成本价：">
            <InputNumber v-model="oneFormValidate[0].cost" :min="0" :max="99999999" v-width="'50%'"></InputNumber>
          </FormItem>
          </Col>
          <Col span="24">
          <FormItem label="原价：">
            <InputNumber v-model="oneFormValidate[0].ot_price" :min="0" :max="99999999" v-width="'50%'"></InputNumber>
          </FormItem>
          </Col>
          <Col span="24" class="asterisk">
          <!-- <div class="asteriskInfo">*</div> -->
          <FormItem label="库存：">
            <InputNumber v-model="oneFormValidate[0].stock" :min="0" :max="99999999"
              :disabled="formValidate.product_type == 1 || openErp" :precision="0" v-width="'50%'"></InputNumber>
          </FormItem>
          </Col>
          <Col span="24" v-if="formValidate.product_type != 4">
          <FormItem label="商品条形码：">
            <Input v-model.trim="oneFormValidate[0].bar_code" v-width="'50%'" placeholder="请输入商品条形码"></Input>
          </FormItem>
          </Col>
          <Col span="24" v-if="formValidate.product_type != 4">
          <FormItem label="商品编号：">
            <Input v-model.trim="oneFormValidate[0].code" v-width="'50%'" placeholder="请输入商品编码"></Input>
          </FormItem>
          </Col>
          <Col span="24" v-if="formValidate.product_type == 0">
          <FormItem label="重量（KG）：">
            <InputNumber v-model="oneFormValidate[0].weight" :min="0" :max="99999999" v-width="'50%'"></InputNumber>
          </FormItem>
          </Col>
          <Col span="24" v-if="formValidate.product_type == 0">
          <FormItem label="体积(m³)：">
            <InputNumber v-model="oneFormValidate[0].volume" :min="0" :max="99999999" v-width="'50%'"></InputNumber>
          </FormItem>
          </Col>
          <Col span="24" v-if="formValidate.product_type == 1">
          <FormItem label="卡密设置：">
            <Button v-if="
              !oneFormValidate[0].virtual_list.length &&
              !oneFormValidate[0].stock
            " @click="addVirtual(0, 'oneFormValidate')">添加卡密</Button>
            <span v-else class="seeCatMy" @click="seeVirtual(oneFormValidate[0], 'oneFormValidate', 0)">已设置</span>
          </FormItem>
          </Col>
        </div>
      </Row>
      <!-- 商品详情 -->
      <Row v-if="currentTab === '3'">
        <Col span="20">
        <wangeditor style="width: 100%" :content="contents" @editorContent="getEditorContent"></wangeditor>
        </Col>
        <!-- <Col span="6">
        <div class="ifam">
          <div class="content" v-html="content"></div>
        </div>
        </Col> -->
      </Row>
      <!-- 物流设置 -->
      <Row v-show="currentTab === '4'">
        <Col v-bind="grid3">
        <FormItem label="配送方式：" prop="">
          <CheckboxGroup v-model="formValidate.delivery_type">
            <Checkbox label="1">快递</Checkbox>
            <!-- <Checkbox label="3">门店配送</Checkbox> -->
            <Checkbox label="2">自提</Checkbox>
          </CheckboxGroup>
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="运费设置：">
          <RadioGroup v-model="formValidate.freight">
            <Radio :label="1">包邮</Radio>
            <Radio :label="2">固定邮费</Radio>
            <Radio :label="3">运费模板</Radio>
          </RadioGroup>
        </FormItem>
        </Col>
        <Col span="24" v-if="formValidate.freight == 2">
        <FormItem label="" prop="freight">
          <div class="acea-row row-middle">
            <InputNumber :min="0" v-model="formValidate.postage" placeholder="请输入金额" class="perW20 maxW" />
            <span class="ml10">元</span>
          </div>
        </FormItem>
        </Col>
        <Col span="24" v-if="formValidate.freight == 3">
        <FormItem label="" prop="">
          <div class="acea-row">
            <Select v-model="formValidate.temp_id" clearable class="perW20 maxW">
              <Option v-for="(item, index) in templateList" :value="item.id" :key="index">{{ item.name }}</Option>
            </Select>
            <!-- <Button @click="addTemp" class="ml15">添加运费模板</Button> -->
          </div>
        </FormItem>
        </Col>
      </Row>
      <!-- 营销设置 -->
      <Row v-show="currentTab === '5'">
        <Col span="24">
        <FormItem label="虚拟销量：">
          <InputNumber v-width="'50%'" :min="0" :max="999999" v-model="formValidate.ficti" placeholder="请输入虚拟销量" />
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="排序：">
          <InputNumber :min="0" :max="999999" v-width="'50%'" v-model="formValidate.sort" placeholder="请输入排序" />
        </FormItem>
        </Col>
        <Col span="24">
        <div class="lines"></div>
        </Col>
        <Col span="24" v-if="merchantType==0">
        <FormItem label="赠送积分：" prop="give_integral">
          <InputNumber v-width="'50%'" v-model="formValidate.give_integral" :min="0" :max="999999"
            placeholder="请输入积分" />
        </FormItem>
        </Col>
        <Col v-bind="grid3" v-if="merchantType==0">
        <FormItem label="赠送优惠券：">
          <div v-if="couponName.length" class="mb20">
            <Tag closable v-for="(item, index) in couponName" :key="index" @on-close="handleClose(item)">{{ item.title
            }}</Tag>
          </div>
          <Button type="primary" @click="addCoupon">添加优惠券</Button>
        </FormItem>
        </Col>
        <Col span="24" v-if="merchantType==0">
        <FormItem label="关联用户标签：" prop="label_id" class="labelClass">
          <div class="labelInput acea-row row-between-wrapper" @click="openLabel">
            <div>
              <div v-if="dataLabel.length">
                <Tag closable v-for="(item, index) in dataLabel" @on-close="closeLabel(item)">{{ item.label_name }}
                </Tag>
              </div>
              <span class="span" v-else>选择用户关联标签</span>
            </div>
            <Icon type="ios-arrow-down" />
          </div>
        </FormItem>
        </Col>
        <Col span="24" v-if="merchantType==0">
        <FormItem label="仅会员可见：">
          <i-switch v-model="formValidate.is_vip_product" :true-value="1" :false-value="0" size="large">
            <span slot="open">开启</span>
            <span slot="close">关闭</span>
          </i-switch>
          <div class="tips">开启后仅付费会员可以看见并购买此商品</div>
        </FormItem>
        </Col>
        <Col span="24" v-if="merchantType==0">
        <FormItem label="单独设置：">
          <CheckboxGroup class="checkAlls" v-model="formValidate.is_sub" @on-change="checkAllGroupChange">
            <Checkbox :label="1">佣金设置（数字即返佣金额）</Checkbox>
            <Checkbox :label="0">付费会员价</Checkbox>
          </CheckboxGroup>
        </FormItem>
        </Col>
        <Col span="24" v-if="formValidate.is_sub.length">
        <!--单规格返佣-->
        <FormItem label="商品属性：" v-if="formValidate.spec_type === 0">
          <Table :data="oneFormValidate" :columns="columnsInstall" border>
            <template slot-scope="{ row, index }" slot="pic">
              <div class="pictrue pictrueTab">
                <img v-lazy="oneFormValidate[0].pic" />
              </div>
            </template>
            <template slot-scope="{ row, index }" slot="price">{{
                oneFormValidate[0].price
            }}</template>
            <template slot-scope="{ row, index }" slot="cost">{{
                oneFormValidate[0].cost
            }}</template>
            <template slot-scope="{ row, index }" slot="ot_price">{{
                oneFormValidate[0].ot_price
            }}</template>
            <template slot-scope="{ row, index }" slot="stock">{{
                oneFormValidate[0].stock
            }}</template>
            <template slot-scope="{ row, index }" slot="bar_code">{{
                oneFormValidate[0].bar_code
            }}</template>
            <template slot-scope="{ row, index }" slot="code">{{
                oneFormValidate[0].code
            }}</template>
            <template slot-scope="{ row, index }" slot="weight">{{
                oneFormValidate[0].weight
            }}</template>
            <template slot-scope="{ row, index }" slot="volume">{{
                oneFormValidate[0].volume
            }}</template>
            <template slot-scope="{ row, index }" slot="brokerage">
              <InputNumber v-model="oneFormValidate[0].brokerage" :min="0" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="brokerage_two">
              <InputNumber v-model="oneFormValidate[0].brokerage_two" :min="0" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="vip_price">
              <InputNumber v-model="oneFormValidate[0].vip_price" :min="0" class="priceBox"></InputNumber>
            </template>
          </Table>
        </FormItem>
        <!--多规格返佣-->
        <FormItem label="批量设置：" v-if="formValidate.spec_type === 1">
          <span v-if="formValidate.is_sub.indexOf(1) > -1">
            一级返佣：<InputNumber placeholder="请输入一级返佣" :min="0" class="columnsBox perW20" v-model="manyBrokerage">
            </InputNumber>
            二级返佣：<InputNumber placeholder="请输入二级返佣" :min="0" class="columnsBox perW20" v-model="manyBrokerageTwo">
            </InputNumber>
          </span>
          <span v-if="formValidate.is_sub.indexOf(0) > -1">
            会员价：<InputNumber placeholder="请输入会员价" :min="0" class="columnsBox perW20" v-model="manyVipPrice">
            </InputNumber>
          </span>
          <Button type="primary" @click="brokerageSetUp">批量设置</Button>
        </FormItem>
        <FormItem label="商品属性：" v-if="formValidate.spec_type === 1 && manyFormValidate.length">
          <Table v-if="formValidate.is_sub" :data="manyFormValidate" :columns="columnsInstal2" border>
            <template slot-scope="{ row, index }" v-for="(item, i) in attrData.length" :slot="'value' + (i + 1)">
              <div>{{ manyFormValidate[index]['value' + (i + 1)] }}</div>
            </template>
            <template slot-scope="{ row, index }" slot="pic">
              <div class="pictrue pictrueTab">
                <img v-lazy="manyFormValidate[index].pic" />
              </div>
            </template>
            <template slot-scope="{ row, index }" slot="price">{{
                manyFormValidate[index].price
            }}</template>
            <template slot-scope="{ row, index }" slot="cost">{{
                manyFormValidate[index].cost
            }}</template>
            <template slot-scope="{ row, index }" slot="ot_price">{{
                manyFormValidate[index].ot_price
            }}</template>
            <template slot-scope="{ row, index }" slot="stock">{{
                manyFormValidate[index].stock
            }}</template>
            <template slot-scope="{ row, index }" slot="bar_code">{{
                manyFormValidate[index].bar_code
            }}</template>
            <template slot-scope="{ row, index }" slot="code">{{
                manyFormValidate[index].code
            }}</template>
            <template slot-scope="{ row, index }" slot="weight">{{
                manyFormValidate[index].weight
            }}</template>
            <template slot-scope="{ row, index }" slot="volume">{{
                manyFormValidate[index].volume
            }}</template>
            <template slot-scope="{ row, index }" slot="brokerage">
              <InputNumber v-model="manyFormValidate[index].brokerage" :min="0" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="brokerage_two">
              <InputNumber v-model="manyFormValidate[index].brokerage_two" :min="0" class="priceBox"></InputNumber>
            </template>
            <template slot-scope="{ row, index }" slot="vip_price">
              <InputNumber v-model="manyFormValidate[index].vip_price" :min="0" class="priceBox"></InputNumber>
            </template>
          </Table>
        </FormItem>
        </Col>
        <Col span="24" v-if="merchantType==0">
        <div class="lines"></div>
        </Col>
        <Col span="24">
        <FormItem label="是否限购：">
          <i-switch v-model="formValidate.is_limit" :true-value="1" :false-value="0" size="large" @on-change="limitTap">
            <span slot="open">开启</span>
            <span slot="close">关闭</span>
          </i-switch>
        </FormItem>
        </Col>
        <Col span="24" v-if="formValidate.is_limit">
        <FormItem label="限购类型：">
          <RadioGroup v-model="formValidate.limit_type">
            <Radio :label="1">单次限购</Radio>
            <Radio :label="2">长期限购</Radio>
          </RadioGroup>
          <div class="tips">
            单次限购是限制每次下单最多购买的数量，长期限购是限制一个用户总共可以购买的数量
          </div>
        </FormItem>
        </Col>
        <Col span="24" v-if="formValidate.is_limit">
        <FormItem label="限购数量：">
          <InputNumber :min="1" v-model="formValidate.limit_num" placeholder="请输入限购数量" class="perW20 maxW" />
        </FormItem>
        </Col>
        <Col span="24" v-if="formValidate.product_type == 0 && merchantType==0">
        <FormItem label="预售商品：">
          <i-switch v-model="formValidate.is_presale_product" :true-value="1" :false-value="0" size="large">
            <span slot="open">开启</span>
            <span slot="close">关闭</span>
          </i-switch>
        </FormItem>
        </Col>
        <Col span="24" v-if="
          formValidate.product_type == 0 && formValidate.is_presale_product
        ">
        <FormItem label="预售活动时间：" prop="presale_time">
          <div class="acea-row row-middle">
            <DatePicker :editable="false" :options="datePickerOptions" type="datetimerange" format="yyyy-MM-dd HH:mm"
              placeholder="请选择活动时间" @on-change="onchangeTime" :value="formValidate.presale_time"
              v-model="formValidate.presale_time" v-width="'50%'"></DatePicker>
          </div>
          <div class="tips">
            设置活动开启结束时间，用户可以在设置时间内发起参与预售
          </div>
        </FormItem>
        </Col>
        <Col span="24" v-if="
          formValidate.product_type == 0 && formValidate.is_presale_product
        ">
        <FormItem label="发货时间：" prop="presale_day">
          <div class="acea-row row-middle">
            <span class="mr10">预售活动结束后</span>
            <InputNumber placeholder="请输入发货时间" :precision="0" :min="1" style="width: 100px"
              v-model="formValidate.presale_day" />
            <span class="ml10">天之内</span>
          </div>
        </FormItem>
        </Col>
        <Col span="24">
		<FormItem label="优品推荐：" v-if="merchantType==0">
		   <i-switch v-model="formValidate.is_good" :true-value="1" :false-value="0" size="large">
		     <span slot="open">开启</span>
		     <span slot="close">关闭</span>
		   </i-switch>
		</FormItem>
      <!--  <FormItem label="商品推荐：">
          <CheckboxGroup v-model="formValidate.recommend" class="checkAlls">
            <Checkbox label="is_hot">热卖单品</Checkbox>
            <Checkbox label="is_benefit">促销单品</Checkbox>
            <Checkbox label="is_best">精品推荐</Checkbox>
            <Checkbox label="is_new">首发新品</Checkbox>
            <Checkbox label="is_good">优品推荐</Checkbox>
          </CheckboxGroup>
        </FormItem> -->
        </Col>
        <Col v-bind="grid3" v-if="merchantType==0">
        <FormItem label="活动优先级：">
          <div class="color-list acea-row row-middle">
            <div class="color-item acea-row row-center-wrapper" :class="activity[color]"
              v-for="(color, index) in formValidate.activity" v-dragging="{
                item: color,
                list: formValidate.activity,
                group: 'color',
              }" :key="color">
              <div class="num">{{ index + 1 }}</div>
              <div>{{ color }}</div>
            </div>
            <div class="tips">可拖动按钮调整活动的优先展示顺序</div>
          </div>
        </FormItem>
        </Col>
        <Col span="24" v-if="merchantType==0">
        <FormItem label="选择优品推荐商品：">
          <div class="acea-row">
            <div class="pictrue" v-for="(item, index) in goodsData" :key="index">
              <img v-lazy="item.image" />
              <Button shape="circle" icon="md-close" @click.native="bindDelete(index)" class="btndel"></Button>
            </div>
            <div v-if="goodsData.length < 12" class="upLoad acea-row row-center-wrapper" @click="goodsTap">
              <Icon type="ios-camera-outline" size="26" />
            </div>
          </div>
        </FormItem>
        </Col>
      </Row>
      <!-- 其他设置-->
      <Row v-show="currentTab === '6'">
        <Col span="24">
        <FormItem label="商品关键字：" prop="">
          <Input v-model="formValidate.keyword" placeholder="请输入商品关键字" v-width="'50%'" />
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="商品简介：" prop="">
          <Input v-model="formValidate.store_info" type="textarea" :rows="3" placeholder="请输入商品简介" v-width="'50%'" />
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="商品口令：">
          <Input v-model="formValidate.command_word" type="textarea" :rows="3" placeholder="请输入商品口令" v-width="'50%'" />
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="商品推荐图：">
          <div class="pictrueBox" @click="modalPicTap('dan', 'recommend_image')">
            <div class="pictrue" v-if="formValidate.recommend_image">
              <img v-lazy="formValidate.recommend_image" />
              <Input v-model="formValidate.recommend_image" class="input-display"></Input>
            </div>
            <div class="upLoad acea-row row-center-wrapper" v-else>
              <Input v-model="formValidate.recommend_image" class="input-display"></Input>
              <Icon type="ios-camera-outline" size="26" />
            </div>
          </div>
          <div class="tips">(建议图片比例5:2)</div>
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="服务保障：">
          <CheckboxGroup v-model="formValidate.ensure_id" class="checkAlls">
            <Checkbox :label="item.id" v-for="(item, index) in ensureData">{{
                item.name
            }}</Checkbox>
          </CheckboxGroup>
        </FormItem>
        </Col>
        <Col span="24">
        <FormItem label="商品参数：" prop="">
          <Select v-model="formValidate.specs_id" clearable filterable v-width="'50%'" placeholder="请输入商品参数"
            @on-change="specsInfo">
            <Option v-for="(item, index) in specsData" :value="item.id" :key="index">{{ item.name }}</Option>
          </Select>
        </FormItem>
        </Col>
        <Col span="24" v-if="formValidate.specs_id">
        <FormItem label="" props="">
          <Table border :columns="specsColumns" :data="specsList" ref="table" class="specsList" width="700">
            <template slot-scope="{ row, index }" slot="action">
              <a @click="delSpecs(index)" v-if="index > 0">删除</a>
            </template>
          </Table>
          <Button class="mt20" @click="addSpecs">添加参数</Button>
        </FormItem>
        </Col>
        <Col span="24" v-if="formValidate.product_type">
        <FormItem label="支持退款：" props="status" label-for="status">
          <i-switch v-model="formValidate.is_support_refund" :true-value="1" :false-value="0" size="large">
            <span slot="open">开启</span>
            <span slot="close">关闭</span>
          </i-switch>
        </FormItem>
        </Col>
        <Col span="24">
		  <FormItem label="自定义留言：">
			<i-switch
			    v-model="customBtn"
			    @on-change="customMessBtn"
			    size="large"
			>
			  <span slot="open">开启</span>
			  <span slot="close">关闭</span>
			</i-switch>
			<div class="mt10" v-if="customBtn">
			  <Select
			      v-model="formValidate.system_form_id"
			      clearable
			      filterable
			      v-width="'50%'"
			      placeholder="请选择"
			      @on-change="changeForm"
			  >
			    <Option
			        v-for="(item, index) in formList"
			        :value="item.id"
			        :key="item.id"
			    >{{ item.name }}</Option
			    >
			  </Select>
			</div>
		  </FormItem>
        <!-- <FormItem label="自定义留言：">
          <i-switch v-model="customBtn" @on-change="customMessBtn" size="large">
            <span slot="open">开启</span>
            <span slot="close">关闭</span>
          </i-switch>
          <div class="addCustom_content" v-if="customBtn">
            <div v-for="(item, index) in formValidate.custom_form" type="flex" :key="index" class="custom_box">
              <Input v-model.trim="item.title" :placeholder="'留言标题' + (index + 1)" class="custom-input" />
              <Select v-model="item.label" class="select-add">
                <Option v-for="items in customList" :value="items.value" :key="items.value">{{ items.label }}</Option>
              </Select>
              <Checkbox v-model="item.status" :true-value="1" :false-value="0">必填</Checkbox>
              <div class="addfont" @click="delcustom(index)">删除</div>
            </div>
          </div>
          <div class="addCustomBox" v-show="customBtn">
            <div class="btn" @click="addcustom">+ 添加表单</div>
            <div class="tips">用户下单时需填写的信息，最多可设置10条</div>
          </div>
        </FormItem> -->
        </Col>
		<Col span="24" v-if="customBtn && formValidate.system_form_id">
			<FormItem label="" props="">
			  <Table border :columns="formColumns" :data="formTypeList" ref="table" class="specsList on">
			    <template slot-scope="{ row }" slot="require">
			      <span>{{row.require?'必填':'不必填'}}</span>
			    </template>
			  </Table>
			</FormItem>
		</Col>
      </Row>
      <Spin size="large" fix v-if="spinShow"></Spin>
    </Form>
    <!-- 商品评论表格 -->
    <Table width="940" v-if="currentTab === '7'" ref="table" :columns="replyColumns" :data="replyData" class="ivu-mt"
      :loading="replyLoading" no-data-text="暂无数据" no-filtered-data-text="暂无筛选结果">
      <template slot-scope="{ row }" slot="info">
        <div class="imgPic acea-row row-middle">
          <viewer>
            <div class="pictrue"><img v-lazy="row.image" /></div>
          </viewer>
          <div class="info line2">{{ row.store_name }}</div>
        </div>
      </template>
      <template slot-scope="{ row }" slot="content">
        <div>用户：{{ row.nickname }}</div>
        <div>评分：{{ row.score }}</div>
        <div>
          <div class="mb5 content_font">{{ row.comment }}</div>
          <viewer>
            <div class="pictrue mr10" v-for="(item, index) in row.pics || []" :key="index">
              <img v-lazy="item" />
            </div>
          </viewer>
        </div>
      </template>
      <!-- <template slot-scope="{ row }" slot="reply">
        <Tooltip max-width="200" placement="bottom">
          <span class="line2">{{
              row.replyComment ? row.replyComment.content : ''
          }}</span>
          <p slot="content">
            {{ row.replyComment ? row.replyComment.content : '' }}
          </p>
        </Tooltip>
      </template> -->
      <template slot-scope="{ row, index }" slot="action">
        <a @click="seeReply(row)">查看</a>
        <Divider type="vertical" />
        <a @click="reply(row)">回复</a>
        <Divider type="vertical" />
        <a @click="delReply(row, '删除评论', index)">删除</a>
      </template>
    </Table>
    <div class="drawer-footer">
      <Button type="primary" @click="handleSubmit('formValidate')">保存</Button>
    </div>
    <Modal v-model="modalPic" width="960px" scrollable footer-hide closable title="上传商品图" :mask-closable="false">
      <uploadPictures :isChoice="isChoice" @getPic="getPic" @getPicD="getPicD" :gridBtn="gridBtn" :gridPic="gridPic"
        v-if="modalPic"></uploadPictures>
    </Modal>
    <coupon-list ref="couponTemplates" @nameId="nameId" :couponids="formValidate.coupon_ids" :updateIds="updateIds"
      :updateName="updateName"></coupon-list>
    <!-- 商品列表 -->
    <Modal v-model="goodsModals" title="商品列表" footerHide scrollable width="900" @on-cancel="goodCancel">
      <goods-list v-if="goodsModals" ref="goodslist" @getProductId="getProductId" :ischeckbox="true"></goods-list>
    </Modal>
    <!-- 用户标签 -->
    <Modal v-model="labelShow" scrollable title="请选择用户标签" :closable="false" width="320" :footer-hide="true"
      :mask-closable="false">
      <userLabel ref="userLabel" @activeData="activeData" @close="labelClose"></userLabel>
    </Modal>
    <!-- 商品标签 -->
    <Modal v-model="storeLabelShow" scrollable title="请选择商品标签" :closable="false" width="320" :footer-hide="true"
      :mask-closable="false">
      <storeLabelList ref="storeLabel" @activeData="activeStoreData" @close="storeLabelClose"></storeLabelList>
    </Modal>
    <replyList ref="replyList"></replyList>
    <Modal v-model="replyModal" scrollable title="回复内容" closable>
      <Form ref="replyForm" :model="replyForm" :rules="ruleInline" :label-position="labelPosition"
        @submit.native.prevent>
        <FormItem prop="content">
          <Input v-model="replyForm.content" type="textarea" :rows="4" placeholder="请输入回复内容" />
        </FormItem>
      </Form>
      <div slot="footer">
        <Button type="primary" @click="oks">确定</Button>
        <Button @click="cancels">取消</Button>
      </div>
    </Modal>
  </Drawer>
</template>

<script>
import { mapState, mapMutations } from 'vuex';
import Setting from '@/setting';
import util from '@/libs/util';
import vuedraggable from 'vuedraggable';
import uploadPictures from '@/components/uploadPictures';
import freightTemplate from '@/components/freightTemplate';
import wangeditor from '@/components/wangEditor/index.vue';

import menusFrom from '../productBrand/components/menusFrom';
import userLabel from '@/components/labelList';
import storeLabelList from '@/components/storeLabelList';
import couponList from '@/components/couponList';
import goodsList from '@/components/goodsList/index';
import addAttr from '../productAttr/addAttr';
import attrList from './attrList';
import addCarMy from './addCarMy';
import VueUeditorWrap from 'vue-ueditor-wrap';
import taoBao from '../productAdd/taoBao';
import replyList from './replyList.vue';
import {
  productInfoApi,
  cascaderListApi,
  productAddApi,
  generateAttrApi,
  productGetRuleApi,
  productGetTemplateApi,
  productGetTempKeysApi,
  checkActivityApi,
  labelListApi,
  productCache,
  cacheDelete,
  brandList,
  productCreateApi,
  productAllUnit,
  productUnitCreate,
  uploadType,
  productAllEnsure,
  productLabelAdd,
  productAllSpecs,
  setReplyApi,
  replyListApi,
  allSystemForm
} from '@/api/product';
import { systemFormInfo } from '@/api/setting'
import { getSupplierList } from '@/api/supplier';
import { erpConfig } from '@/api/erp';
import { uploadByPieces } from '@/utils/upload'; //引入uploadByPieces方法
export default {
  name: 'product_productAdd',
  components: {
    VueUeditorWrap,
    uploadPictures,
    freightTemplate,
    goodsList,
    addAttr,
    couponList,
    taoBao,
    userLabel,
    menusFrom,
    attrList,
    addCarMy,
    storeLabelList,
    wangeditor,
    draggable: vuedraggable,
    replyList,
  },
  props: {
    visible: {
      type: Boolean,
      default: false,
    },
    productId: {
      type: Number,
      default: 0,
    },
  },
  data() {
    return {
	  formTypeList: [],
	  formColumns: [
	    {
	      title: '表单标题',
	      key: 'title',
	      // align:'center',
	      minWidth: 100
	    },
	    {
	      title: '表单类型',
	      key: 'name',
	      // align:'center',
	      minWidth: 100
	    },
	    {
	      title: '是否必填',
	      slot: 'require',
	      // align:'center',
	      minWidth: 100
	    }
	  ],
      specsList: [],
      supplierList: [],
      specsColumns: [
        {
          title: '参数名称',
          key: 'name',
          align: 'center',
          width: 150,
          render: (h, params) => {
            return h('div', [
              h('Input', {
                props: {
                  value: params.row.name,
                  placeholder: '请输入参数名称',
                },
                on: {
                  'on-change': (e) => {
                    params.row.name = e.target.value;
                    this.specsList[params.index].name = e.target.value;
                  },
                },
              }),
            ]);
          },
        },
        {
          title: '参数值',
          key: 'value',
          align: 'center',
          width: 300,
          render: (h, params) => {
            return h('div', [
              h('Input', {
                props: {
                  value: params.row.value,
                  placeholder: '请输入参数值',
                },
                on: {
                  'on-change': (e) => {
                    params.row.value = e.target.value;
                    this.specsList[params.index].value = e.target.value;
                  },
                },
              }),
            ]);
          },
        },
        {
          title: '排序',
          key: 'sort',
          align: 'center',
          width: 100,
          render: (h, params) => {
            return h('div', [
              h('InputNumber', {
                props: {
                  value: parseInt(params.row.sort) || 0,
                  placeholder: '排序',
                  precision: 0,
                },
                on: {
                  'on-change': (e) => {
                    params.row.sort = e;
                    this.specsList[params.index].sort = e;
                  },
                },
              }),
            ]);
          },
        },
        {
          title: '操作',
          slot: 'action',
          align: 'center',
          minWidth: 120,
        },
      ],
      //自定义留言下拉选择
      customList: [
        {
          value: 'text',
          label: '文本框',
        },
        {
          value: 'number',
          label: '数字',
        },
        {
          value: 'email',
          label: '邮件',
        },
        {
          value: 'data',
          label: '日期',
        },
        {
          value: 'time',
          label: '时间',
        },
        {
          value: 'id',
          label: '身份证',
        },
        {
          value: 'phone',
          label: '手机号',
        },
        {
          value: 'img',
          label: '图片',
        },
      ],
      headTab: [
        { title: '基础信息', name: '1' },
        { title: '规格库存', name: '2' },
        { title: '商品详情', name: '3' },
        { title: '物流设置', name: '4' },
        { title: '营销设置', name: '5' },
        { title: '其他设置', name: '6' },
        { title: '商品评论', name: '7' },
      ],
      productType: [
        { name: '普通商品', title: '物流发货', id: 0 },
        { name: '卡密/网盘', title: '自动发货', id: 1 },
        { name: '虚拟商品', title: '虚拟发货', id: 3 },
		{ name: "次卡商品", title: "到店核销", id: 4 },
      ],
      virtualList: [],
      carMyShow: false, //是否开启卡密弹窗
      recommend: [], //商品推荐
      customBtn: false, //自定义留言开关
      attrShow: false,
      content: '',
      contents: '',
      seletVideo: 0,
      fileUrl: Setting.apiBaseURL + '/file/upload',
      fileUrl2: Setting.apiBaseURL + '/file/video_upload',
      upload_type: '', //视频上传类型 1 本地上传 2 3 4 OSS上传
      uploadData: {}, // 上传参数
      header: {},
      dataLabel: [],
      storeDataLabel: [],
      labelShow: false,
      storeLabelShow: false,
      props: { emitPath: false, multiple: true, checkStrictly: true },
      type: 0,
      goodsModals: false,
      off_show: 0,
      modals: false,
      spinShow: false,
      openSubimit: false,
      grid2: {
        xl: 10,
        lg: 12,
        md: 12,
        sm: 24,
        xs: 24,
      },
      grid3: {
        xl: 18,
        lg: 18,
        md: 20,
        sm: 24,
        xs: 24,
      },
      // 批量设置表格data
      oneFormBatch: [
        {
          attr: '全部',
          pic: '',
          price: 0,
		  settle_price: 0,
          cost: 0,
          ot_price: 0,
          stock: 0,
          bar_code: '',
          code: '',
          weight: 0,
          volume: 0,
        },
      ],
      // 规格数据
      formDynamic: {
        attrsName: '',
        attrsVal: '',
      },
      formDynamicNameData: [],
      isBtn: false,
      myConfig: {
        autoHeightEnabled: false, // 编辑器不自动被内容撑高
        initialFrameHeight: 500, // 初始容器高度
        initialFrameWidth: '100%', // 初始容器宽度
        UEDITOR_HOME_URL: '/admin/UEditor/',
        serverUrl: '',
      },
      columnsCarMy: [],
      columns2: [
        {
          title: '商品规格',
          slot: 'attr',
          align: 'center',
          minWidth: 80,
        },
        {
          title: '图片',
          slot: 'pic',
          align: 'center',
          minWidth: 80,
        },
        {
          title: '售价',
          slot: 'price',
          align: 'center',
          minWidth: 95,
        },
        {
          title: '成本价',
          slot: 'cost',
          align: 'center',
          minWidth: 95,
        },
        {
          title: '原价',
          slot: 'ot_price',
          align: 'center',
          minWidth: 95,
        },
        {
          title: '库存',
          slot: 'stock',
          align: 'center',
          minWidth: 95,
        },
        {
          title: '商品条形码',
          slot: 'bar_code',
          align: 'center',
          minWidth: 120,
        },
        {
          title: '商品编号',
          slot: 'code',
          align: 'center',
          minWidth: 120,
        },
        {
          title: '重量（KG）',
          slot: 'weight',
          align: 'center',
          minWidth: 95,
        },
        {
          title: '体积(m³)',
          slot: 'volume',
          align: 'center',
          minWidth: 95,
        },
        {
          title: '操作',
          slot: 'action',
          // fixed: "right",
          align: 'center',
          minWidth: 140,
        },
      ],
      columns: [],
      columnsInstall: [],
      columnsInstal2: [],
      gridPic: {
        xl: 6,
        lg: 8,
        md: 12,
        sm: 12,
        xs: 12,
      },
      gridBtn: {
        xl: 4,
        lg: 8,
        md: 8,
        sm: 8,
        xs: 8,
      },
      formValidate: {
		system_form_id: 0, //自定义表单
        supplier_id: 0, //供应商
        is_presale_product: 0, //预售商品开关
        is_limit: 0, //是否限购开关
        limit_type: 1, //1单次限购，2长期限购
        limit_num: 1, //限购数量
        is_vip_product: 0, //付费会员专属开关
        is_support_refund: 0,
        disk_info: '', //卡密简介
        presale_day: 1, //预售发货时间-结束
        presale_time: [],
        auto_on_time: '',
        video_open: false, //视频按钮是否显示
        store_name: '',
        freight: 1, //运费设置
        postage: 0, //设置运费金额
        custom_form: [], //自定义留言
        cate_id: [],
        label_id: [],
        ensure_id: [],
        keyword: '',
        unit_name: '',
        specs_id: 0,
        store_info: '',
        bar_code: '',
        code: '',
        image: '',
        recommend_image: '',
        slider_image: [],
        description: '',
        ficti: 0,
        give_integral: 0,
        sort: 0,
        is_show: 1,
        is_hot: 0,
        is_benefit: 0,
        is_best: 0,
        is_new: 0,
        is_good: 0,
        is_postage: 0,
        is_sub: [],
        id: 0,
        spec_type: 0,
        video_link: '',
        temp_id: '',
        attrs: [],
        items: [
          {
            pic: '',
            price: 0,
            cost: 0,
            ot_price: 0,
            stock: 0,
            bar_code: '',
            code: '',
          },
        ],
        activity: ['默认', '秒杀', '砍价', '拼团'],
        couponName: [],
        header: [],
        selectRule: '',
        coupon_ids: [],
        command_word: '',
        delivery_type: ['1'],
        specs: [],
        recommend_list: [],
        brand_id: [],
        product_type: 0,
      },
      ruleList: [],
      templateList: [],
      createBnt: false,
      showIput: false,
      manyFormValidate: [],
      // 单规格表格data
      oneFormValidate: [
        {
          pic: '',
          price: 0,
		  settle_price: 0,
          cost: 0,
          ot_price: 0,
          stock: 0,
          bar_code: '',
          code: '',
          weight: 0,
          volume: 0,
          brokerage: 0,
          brokerage_two: 0,
          vip_price: 0,
          virtual_list: [],
		  write_times: 0, //核销次数
		  write_valid: 1, //核销时效
		  days: 1
        },
      ],
      images: [],
      imagesTable: '',
      currentTab: '1',
      isChoice: '',
      grid: {
        xl: 8,
        lg: 8,
        md: 12,
        sm: 24,
        xs: 24,
      },
      loading: false,
      modalPic: false,
      template: false,
      uploadList: [],
      treeSelect: [],
      labelSelect: [],
      ensureData: [],
      specsData: [],
      picTit: '',
      tableIndex: 0,
      ruleValidate: {
        store_name: [
          { required: true, message: '请输入商品名称', trigger: 'blur' },
        ],
        cate_id: [
          {
            required: true,
            message: '请选择商品分类',
            trigger: 'change',
            type: 'array',
          },
        ],
        keyword: [
          { required: true, message: '请输入商品关键字', trigger: 'blur' },
        ],
        unit_name: [
          {
            required: true,
            message: '请输入单位',
            trigger: 'change',
          },
        ],
        store_info: [
          { required: true, message: '请输入商品简介', trigger: 'blur' },
        ],
        //image: [{ required: true, message: "请上传商品图", trigger: "change" }],
        slider_image: [
          {
            required: true,
            message: '请上传商品轮播图',
            type: 'array',
            trigger: 'change',
          },
        ],
        spec_type: [
          { required: true, message: '请选择商品规格', trigger: 'change' },
        ],
        selectRule: [
          { required: true, message: '请选择商品规格属性', trigger: 'change' },
        ],
        give_integral: [{ type: 'integer', message: '请输入整数' }],
        // delivery_type:[
        //   { required: true, type: 'array', min: 1, message: '请选择配送方式', trigger: 'change' },
        // ]
      },
      manyBrokerage: 0,
      manyBrokerageTwo: 0,
      manyVipPrice: 0,
      upload: {
        videoIng: false, // 是否显示进度条；
      },
      videoIng: false, // 是否显示进度条；
      progress: 0, // 进度条默认0
      videoLink: '',
      attrs: [],
      activity: {
        默认: 'colorBlue',
        秒杀: 'colorBlue',
        砍价: 'colorBlue',
        拼团: 'colorBlue',
      },
      couponName: [],
      updateIds: [],
      updateName: [],
      rakeBack: [
        {
          title: '一级返佣',
          slot: 'brokerage',
          align: 'center',
          width: 95,
        },
        {
          title: '二级返佣',
          slot: 'brokerage_two',
          align: 'center',
          width: 95,
        },
      ],
      member: [
        {
          title: '会员价',
          slot: 'vip_price',
          align: 'center',
          width: 95,
        },
      ],
      headerCarMy: {
        title: '卡密设置',
        slot: 'fictitious',
        align: 'center',
        width: 95,
      },
      columnsInstalM: [],
      moveIndex: '',
      goodsData: [],
      brandData: [],
      unitNameList: [],
      formBrand: {},
      attrsList: [],
      activeAtter: [],
      tabIndex: 0,
      tabName: '',
      attrData: [],
      datePickerOptions: {
        disabledDate(date) {
          return date && date.valueOf() < Date.now() - 86400000;
        },
      },
      openErp: false,
      replyColumns: [
        {
          title: '评论ID',
          key: 'id',
          width: 80,
        },
        {
          title: '商品信息',
          slot: 'info',
          minWidth: 250,
        },
        // {
        //   title: '用户名称',
        //   key: 'nickname',
        //   minWidth: 150,
        // },
        // {
        //   title: '评分',
        //   key: 'score',
        //   sortable: true,
        //   minWidth: 70,
        // },
        {
          title: '评价内容',
          slot: 'content',
          minWidth: 300,
        },
        // {
        //   title: '回复内容',
        //   slot: 'reply',
        //   minWidth: 160,
        // },
        {
          title: '评价时间',
          key: 'add_time',
          sortable: true,
          width: 150,
        },
        {
          title: '操作',
          slot: 'action',
          // fixed: 'right',
          width: 150,
        },
      ],
      replyData: [],
      replyLoading: false,
      replyModal: false,
      rows: {},
      replyForm: {
        content: '',
      },
      ruleInline: {
        content: [
          { required: true, message: '请输入回复内容', trigger: 'blur' },
        ],
      },
      replyValidate: {
        is_reply: '',
        data: '',
        store_name: '',
        account: '',
        product_id: this.productId,
        page: 1,
        limit: 15,
      },
      total: 0,
	  merchantType: 0,
	  formList: [],
    };
  },
  computed: {
    ...mapState('admin/layout', ['isMobile', 'menuCollapse']),
    labelWidth() {
      return this.isMobile ? undefined : 120;
    },
    labelPosition() {
      return this.isMobile ? 'top' : 'right';
    },
    labelBottom() {
      return this.isMobile ? undefined : 15;
    },
    startPickOptions() {
      const that = this;
      return {
        disabledDate(time) {
          if (that.formValidate.auto_off_time) {
            return (
              time.getTime() >
              new Date(that.formValidate.auto_off_time).getTime() - 86400000
            );
          }
          return '';
        },
      };
    },
    endPickOptions() {
      const that = this;
      return {
        disabledDate(time) {
          if (that.formValidate.is_show == '1') {
            return time.getTime() < Date.now();
          }
          if (that.formValidate.auto_on_time) {
            return (
              time.getTime() <
              new Date(that.formValidate.auto_on_time).getTime() + 86400000
            );
          }
          return '';
        },
      };
    },
  },
  created() {
    this.getSupplierList();
    this.columns = this.columns2.slice(1, 10);
    let data = JSON.parse(JSON.stringify(this.columns2));
    data.splice(8, 2, this.headerCarMy);
    this.columnsCarMy = data;
    let fictitious = JSON.parse(JSON.stringify(this.columns2));
    fictitious.splice(8, 2);
    this.columnsFictitious = fictitious;
    this.getToken();
    this.getErpConfig();
    // this.columnsInstall = this.columns2.slice(0, 4).concat(this.columnsInstall);
    // this.columnsInsta8 = this.columns2.slice(0, 4).concat(this.columnsInsta8);
  },
  mounted() {
    this.setCopyrightShow({ value: false });
    // if ((this.productId !== '0' && this.productId) || this.$route.query.copy) {
    //   this.getInfo();
    // } else if (this.productId === '0') {
    //   productCache()
    //     .then((res) => {
    //       let data = res.data.info;
    //       if (!Array.isArray(data)) {
    //         let cate_id = data.cate_id.map(Number);
    //         let label_id = data.label_id.map(Number);
    //         this.attrs = data.items || [];
    //         let ids = [];
    //         // let names = [];
    //         if (data.coupons) {
    //           data.coupons.map((item) => {
    //             ids.push(item.id);
    //             // names.push(item.title);
    //           });
    //           this.couponName = data.coupons;
    //         }
    //         this.formValidate = data;
    //         // this.couponName = data.coupons;
    //         // that.couponName = names;
    //         this.formValidate.coupon_ids = ids;
    //         this.formValidate.is_limit = this.formValidate.is_limit ? 1 : 0;
    //         this.formValidate.limit_type = parseInt(
    //           this.formValidate.limit_type
    //         );
    //         this.formValidate.is_support_refund = parseInt(
    //           this.formValidate.is_support_refund
    //         );
    //         this.updateIds = ids;
    //         this.updateName = data.coupons;
    //         this.formValidate.cate_id = cate_id;
    //         this.dataLabel = data.label_id;
    //         this.storeDataLabel = data.store_label_id;
    //         this.specsList = data.specs;
    //         this.oneFormValidate = data.attrs;
    //         this.formValidate.header = [];
    //         this.generate(0);
    //         this.addmanyData(data.attrs);
    //         this.productTypeTap(2);
    //         this.columns = this.columns2.slice(1, 10);
    //         //this.manyFormValidate = data.attrs;
    //         this.formValidate.custom_form = data.custom_form || [];
    //         if (this.formValidate.custom_form.length) {
    //           this.customBtn = true;
    //         }
    //         this.spec_type = data.spec_type;
    //         if (data.spec_type === 0) {
    //           this.manyFormValidate = [];
    //         } else {
    //           this.createBnt = true;
    //           this.oneFormValidate = [
    //             {
    //               pic: data.slider_image[0],
    //               price: 0,
    //               cost: 0,
    //               ot_price: 0,
    //               stock: 0,
    //               bar_code: '',
    //               code: '',
    //               weight: 0,
    //               volume: 0,
    //               brokerage: 0,
    //               brokerage_two: 0,
    //               vip_price: 0,
    //               virtual_list: [],
    //             },
    //           ];
    //         }
    //         this.spinShow = false;
    //       }
    //     })
    //     .catch((err) => {
    //       this.$Message.error(err.msg);
    //     });
    // }
    // if (this.$route.query.type) {
    //   this.modals = true;
    //   this.type = this.$route.query.type;
    // } else {
    //   this.type = 0;
    // }
    // this.goodsCategory();
    // this.productGetRule();
    // this.productGetTemplate();
    // this.getBrandList();
    // this.getAllUnit();
    // this.uploadType();
    // this.getProductAllEnsure();
    // this.getProductAllSpecs();
  },
  destroyed() {
    this.setCopyrightShow({ value: true });
  },
  methods: {
    ...mapMutations('admin/layout', ['setCopyrightShow']),
	changeForm(e){
	  this.getSystemFormInfo(e,{type:1});
	},
	getSystemFormInfo(e,data){
	  systemFormInfo(e,data).then(res=>{
	    this.formTypeList = res.data.info;
	  }).catch(err=>{
	    this.$Message.error(err.msg);
	  })
	},
	allFormList(){
	  allSystemForm().then(res=>{
	    this.formList = res.data;
	  }).catch(err=>{
	    this.$Message.error(err.msg);
	  })
	},
    limitTap(e) {
      if (e) {
        this.formValidate.limit_type =
          this.formValidate.is_limit && !this.formValidate.limit_type ? 1 : 0;
        this.formValidate.limit_num =
          this.formValidate.is_limit && this.formValidate.limit_num == 0
            ? 1
            : 0;
      } else {
        this.formValidate.limit_type = 0;
        this.formValidate.limit_num = 0;
      }
    },
    //erp配置
    getErpConfig() {
      erpConfig()
        .then((res) => {
          this.openErp = res.data.open_erp;
        })
        .catch((err) => {
          this.$Message.error(err.msg);
        });
    },
    delSpecs(index) {
      this.specsList.splice(index, 1);
    },
    addSpecs() {
      let obj = { name: '', value: '', sort: 0 };
      this.specsList.push(obj);
    },
    specsInfo(e) {
      this.specsData.forEach((item) => {
        if (item.id == e) {
          this.specsList = item.specs;
        }
      });
    },
    getProductAllSpecs() {
      productAllSpecs()
        .then((res) => {
          this.specsData = res.data;
        })
        .catch((err) => {
          this.$Message.error(err.msg);
        });
    },
    getProductAllEnsure() {
      productAllEnsure()
        .then((res) => {
          this.ensureData = res.data;
        })
        .catch((err) => {
          this.$Message.error(err.msg);
        });
    },
    //添加倒入卡密的值
    changeVirtual(e) {
      this.virtualList = this.virtualList.concat(e);
    },
    //添加卡密
    addVirtual(index, name) {
      this.tabIndex = index;
      this.tabName = name;
      this.virtualListClear();
      this.$refs.addCarMy.fixedCar = {
        disk_info: '',
        stock: 0,
      };
      this.$refs.addCarMy.cartMyType = 1;
      this.carMyShow = true;
    },
    //确认提交卡密
    fixdBtn(e) {
      if (e.cartMyType == 1) {
        this.$set(this[this.tabName][this.tabIndex], 'disk_info', e.disk_info);
        this.$set(this[this.tabName][this.tabIndex], 'stock', Number(e.stock));
        this[this.tabName][this.tabIndex].virtual_list = [];
      } else {
        this.$set(
          this[this.tabName][this.tabIndex],
          'virtual_list',
          e.virtualList
        );
        this.$set(
          this[this.tabName][this.tabIndex],
          'stock',
          e.virtualList.length
        );
        this[this.tabName][this.tabIndex].disk_info = '';
      }
      this.carMyShow = false;
    },
    closeCarMy() {
      this.carMyShow = false;
    },
    //清空卡密
    virtualListClear() {
      this.virtualList = [
        {
          key: '',
          value: '',
        },
      ];
    },
    seeVirtual(data, name, index) {
      this.tabName = name;
      this.tabIndex = index;
      this.virtualListClear();
      this.$refs.addCarMy.fixedCar = {
        disk_info: '',
        stock: 0,
      };
      if (data.virtual_list && data.virtual_list.length) {
        this.$refs.addCarMy.cartMyType = 2;
        this.virtualList = data.virtual_list;
      } else if (data.disk_info) {
        this.$refs.addCarMy.cartMyType = 1;
        this.$refs.addCarMy.fixedCar.disk_info = data.disk_info;
        this.$refs.addCarMy.fixedCar.stock = data.stock;
      }
      this.carMyShow = true;
    },
    customMessBtn(e) {
      if (!e) {
        this.formValidate.system_form_id = 0;
      }
    },
    // addcustom() {
    //   if (this.formValidate.custom_form.length > 9) {
    //     this.$Message.warning('最多添加10条');
    //   } else {
    //     this.addAssembly();
    //   }
    // },
    delcustom(index) {
      this.formValidate.custom_form.splice(index, 1);
    },
    // 预售具体日期
    onchangeTime(e) {
      this.formValidate.presale_time = e;
    },
    //定时上架
    onchangeShow(e) {
      this.formValidate.auto_on_time = e;
    },
    //定时下架
    onchangeOff(e) {
      this.formValidate.auto_off_time = e;
    },
    // 获取供应商内容
    getSupplierList() {
      getSupplierList()
        .then(async (res) => {
          this.supplierList = res.data;
        })
        .catch((res) => {
          this.$Message.error(res.msg);
        });
    },
    //打开属性
    batchAttr() {
      this.attrShow = true;
      // if(!this.activeAtter.length){
      //  let data = this.attrs;
      //  data.map(el=>{
      //  			el.details = [];
      //  	el.detail.map(label=>{
      //  		el.details.push({
      //  			name:label,
      //  			select:false
      //  		})
      //  	})
      //  })
      //  this.attrsList = data;
      // }
    },
    //获取属性
    getAttr() {
      this.oneFormBatch[0].attr = '全部';
      let data = this.attrs;
      data.map((el) => {
        el.details = [];
        el.detail.map((label) => {
          el.details.push({
            name: label,
            select: false,
          });
        });
      });
      this.attrsList = data;
    },
    //选中属性
    activeAttr(e) {
      this.attrsList = e;
    },
    //关闭属性弹窗
    labelAttr() {
      this.attrShow = false;
    },
    //多属性为空
    manyEmpty(j) {
      j.pic = '';
      j.price = 0;
	  j.settle_price = 0;
      j.cost = 0;
      j.ot_price = 0;
      j.stock = 0;
      j.bar_code = '';
      j.code = '';
      j.weight = 0;
      j.volume = 0;
      j.virtual_list = [];
    },

    doCombination(arr) {
      var count = arr.length - 1; //数组长度(从0开始)
      var tmp = [];
      var totalArr = []; // 总数组

      return doCombinationCallback(arr, 0); //从第一个开始
      //js 没有静态数据，为了避免和外部数据混淆，需要使用闭包的形式
      function doCombinationCallback(arr, curr_index) {
        for (let val of arr[curr_index]) {
          tmp[curr_index] = val; //以curr_index为索引，加入数组
          //当前循环下标小于数组总长度，则需要继续调用方法
          if (curr_index < count) {
            doCombinationCallback(arr, curr_index + 1); //继续调用
          } else {
            totalArr.push(tmp.join(',')); //(直接给push进去，push进去的不是值，而是值的地址)
          }

          //js  对象都是 地址引用(引用关系)，每次都需要重新初始化，否则 totalArr的数据都会是最后一次的 tmp 数据；
          let oldTmp = tmp;
          tmp = [];
          for (let index of oldTmp) {
            tmp.push(index);
          }
        }
        return totalArr;
      }
    },

    //提交属性值；
    subAttrs(e) {
      let selectData = [];
      this.attrsList.forEach((el, index) => {
        let obj = [];
        el.details.forEach((label) => {
          if (label.select) {
            obj.push(label.name);
          }
        });
        if (obj.length) {
          selectData.push(obj);
        }
      });
      let newData = [];
      if (selectData.length) {
        newData = this.doCombination(selectData);
      }
      this.attrShow = false;
      this.activeAtter = selectData;
      this.oneFormBatch[0].attr = newData.length ? newData.join(';') : '全部';
      this.manyFormValidate.forEach((j) => {
        j.select = false;
        if (newData.length) {
          newData.forEach((item) => {
            if (j.values.split('').length == item.split('').length) {
              if (j.values == item) {
                j.select = true;
              }
            } else {
              if (j.values.indexOf(item) != -1) {
                j.select = true;
              }
            }
          });
        } else {
          j.select = true;
        }
      });
      this.$set(this, 'manyFormValidate', this.manyFormValidate);
    },
    goodsOn(e) {
      if (e == 0 || e == 1) {
        this.formValidate.auto_on_time = '';
      }
    },
    goodsOff(e) {
      if (!e) {
        this.formValidate.auto_off_time = '';
      }
    },
    addBrand() {
      this.$refs.menusFrom.modals = true;
      this.$refs.menusFrom.titleFrom = '添加品牌分类';
      this.formBrand = {
        sort: 0,
        is_show: 1,
      };
      this.formBrand.fid = [0];
      this.$refs.menusFrom.type = 1;
    },
    getAllUnit() {
      productAllUnit()
        .then((res) => {
          this.unitNameList = res.data;
        })
        .catch((err) => {
          this.$Message.error(err.msg);
        });
    },
    addClass() {
      this.$modalForm(productCreateApi()).then(() => this.goodsCategory());
    },
    addUnit() {
      this.$modalForm(productUnitCreate()).then(() => this.getAllUnit());
    },
    addStoreLabel() {
      this.$modalForm(productLabelAdd()).then(() => { });
    },
    productTypeTap(num, item) {
      if (num == 1) {
        if (this.productId) return this.$Message.error('商品类型不能切换！');
        this.formValidate.product_type = item.id;
      }
      if (this.formValidate.product_type) {
        this.headTab = [
          { title: '基础信息', name: '1' },
          { title: '规格库存', name: '2' },
          { title: '商品详情', name: '3' },
          { title: '营销设置', name: '5' },
          { title: '其他设置', name: '6' },
          { title: '商品评论', name: '7' },
        ];
        this.formValidate.postage = 0;
        this.formValidate.supplier_id = 0;
      } else {
        this.headTab = [
          { title: '基础信息', name: '1' },
          { title: '规格库存', name: '2' },
          { title: '商品详情', name: '3' },
          { title: '物流设置', name: '4' },
          { title: '营销设置', name: '5' },
          { title: '其他设置', name: '6' },
          { title: '商品评论', name: '7' },
        ];
      }
    },
    closeLabel(label) {
      let index = this.dataLabel.indexOf(
        this.dataLabel.filter((d) => d.id == label.id)[0]
      );
      this.dataLabel.splice(index, 1);
    },
    activeData(dataLabel) {
      this.labelShow = false;
      this.dataLabel = dataLabel;
    },
    openLabel(row) {
      this.labelShow = true;
      this.$refs.userLabel.userLabel(
        JSON.parse(JSON.stringify(this.dataLabel))
      );
    },
    // 标签弹窗关闭
    labelClose() {
      this.labelShow = false;
    },
    closeStoreLabel(label) {
      let index = this.storeDataLabel.indexOf(
        this.storeDataLabel.filter((d) => d.id == label.id)[0]
      );
      this.storeDataLabel.splice(index, 1);
    },
    activeStoreData(storeDataLabel) {
      this.storeLabelShow = false;
      this.storeDataLabel = storeDataLabel;
    },
    openStoreLabel(row) {
      this.storeLabelShow = true;
      this.$refs.storeLabel.storeLabel(
        JSON.parse(JSON.stringify(this.storeDataLabel))
      );
    },
    // 标签弹窗关闭
    storeLabelClose() {
      this.storeLabelShow = false;
    },
    // 品牌列表
    getBrandList() {
      brandList()
        .then((res) => {
          //initBran()函数作用iview中规定value必须是字符串，后台返回成了数字，用于处理这个，给了个递归；
          this.initBran(res.data);
          this.brandData = res.data;
        })
        .catch((err) => {
          this.$Message.error(err.msg);
        });
    },
    initBran(data){
      data.map(item=>{
        item.value = item.value.toString();
        if(item.children && item.children.length){
          this.initBran(item.children);
        }
      })
    },
    getProductId(e) {
      this.goodsModals = false;
      let nArr = this.goodsData.concat(e).filter((element, index, self) => {
        return (
          self.findIndex((x) => x.product_id == element.product_id) == index
        );
      });

      this.goodsData = nArr.slice(0, 12);
    },
    goodCancel() {
      this.goodsModals = false;
    },
    goodsTap() {
      this.goodsModals = true;
      this.$refs.goodslist.handleSelectAll();
    },
    bindDelete(index) {
      this.goodsData.splice(index, 1);
    },
    cancel() {
      this.$router.push({ path: '/admin/product/product_list' });
    },

    videoSaveToUrl(file) {
      let imgTypeArr = ['video/mp4'];
      let imgType = imgTypeArr.indexOf(file.type) !== -1;
      if (!imgType) {
        return this.$Message.warning({
          content: '文件  ' + file.name + '  格式不正确, 请选择格式正确的视频',
          duration: 5,
        });
      }
      uploadByPieces({
        randoms: '', // 随机数，这里作为给后端处理分片的标识 根据项目看情况 是否要加
        file: file, // 视频实体
        pieceSize: 3, // 分片大小
        success: (data) => {
          this.formValidate.video_link = data.file_path;
          this.progress = 100;
        },
        error: (e) => {
          this.$Message.error(e.msg);
        },
        uploading: (chunk, allChunk) => {
          this.videoIng = true;
          let st = Math.floor((chunk / allChunk) * 100);
          this.progress = st;
        },
      });
      return false;
    },

    // 上传头部token
    getToken() {
      this.header['Authori-zation'] = 'Bearer ' + util.cookies.get('token');
    },
    // beforeUpload() {
    //   this.uploadData = {};
    //   let promise = new Promise((resolve) => {
    //     this.$nextTick(function () {
    //       resolve(true);
    //     });
    //   });
    //   return promise;
    // },
    // 上传成功
    handleSuccess(res, file, fileList) {
      if (res.status === 200) {
        this.formValidate.video_link = res.data.src;
        this.$Message.success(res.msg);
      } else {
        this.$Message.error(res.msg);
      }
    },
    //获取视频上传类型
    uploadType() {
      uploadType().then((res) => {
        this.upload_type = res.data.upload_type;
      });
    },
    getEditorContent(data) {
      this.content = data;
    },
    infoData(data) {
      let cate_id = data.cate_id.map(Number);
      this.attrs = data.items || [];
      let ids = [];
      data.coupons.map((item) => {
        ids.push(item.id);
      });
      this.goodsData = data.recommend_list;
      if (data.auto_off_time) {
        this.off_show = 1;
      } else {
        this.off_show = 0;
      }
      let brandIds = [];
      data.brand_id.forEach(item=>{
        brandIds.push(item.toString())
      })
      this.formValidate = data;
	  this.formTypeList = data.custom_form_info;
      this.formValidate.brand_id = brandIds;
      if (data.type == 2) {
        this.formValidate.supplier_id = data.relation_id;
      }
      this.formValidate.is_limit = this.formValidate.is_limit ? 1 : 0;
      this.formValidate.limit_type = parseInt(data.limit_type);
      this.formValidate.is_support_refund = parseInt(
        this.formValidate.is_support_refund
      );
      this.contents = this.content = data.description;
      this.couponName = data.coupons;
      this.formValidate.coupon_ids = ids;
      this.updateIds = ids;
      this.updateName = data.coupons;
      this.formValidate.cate_id = cate_id;
      this.dataLabel = data.label_id;
      this.storeDataLabel = data.store_label_id;
      this.specsList = data.specs;
      if (data.attr) {
        this.oneFormValidate = [data.attr];
      }
      this.formValidate.header = [];
      this.generate(0);
      //this.manyFormValidate = data.attrs;
      this.addmanyData(data.attrs);
      this.productTypeTap(2);
      this.formValidate.system_form_id = data.system_form_id || 0;
      if (this.formValidate.system_form_id) {
        this.customBtn = true;
      }else{
        this.customBtn = false;
      }

      this.spec_type = data.spec_type;
      if (data.spec_type === 0) {
        this.manyFormValidate = [];
      } else {
        this.createBnt = true;
        this.oneFormValidate = [
          {
            pic: '',
            price: 0,
			settle_price: 0,
            cost: 0,
            ot_price: 0,
            stock: 0,
            bar_code: '',
            code: '',
            weight: 0,
            volume: 0,
            brokerage: 0,
            brokerage_two: 0,
            vip_price: 0,
            virtual_list: [],
			write_times: 0, //核销次数
			write_valid: 1, //核销时效
			days: 1
          },
        ];
      }
    },
    //关闭淘宝弹窗并生成数据；
    onClose(data) {
      this.modals = false;
      this.infoData(data);
    },

    checkMove(evt) {
      this.moveIndex = evt.draggedContext.index;
    },
    end() {
      this.moveIndex = '';
    },
    checkAllGroupChange(data) {
      this.checkAllGroup(data);
    },
    checkAllGroup(data) {
      if (this.formValidate.spec_type === 0) {
        if (data.indexOf(0) > -1) {
          this.columnsInstall = this.columns2.slice(1, 5).concat(this.member);
        } else if (data.indexOf(1) > -1) {
          this.columnsInstall = this.columns2.slice(1, 5).concat(this.rakeBack);
        } else {
          this.columnsInstall = this.columns2.slice(1, 5);
        }
        if (data.length === 2) {
          this.columnsInstall = this.columns2
            .slice(1, 5)
            .concat(this.rakeBack)
            .concat(this.member);
        }
      } else {
        if (data.indexOf(0) > -1) {
          this.columnsInstal2 = this.columnsInstalM
            .slice(0, 4)
            .concat(this.member);
        } else if (data.indexOf(1) > -1) {
          this.columnsInstal2 = this.columnsInstalM
            .slice(0, 4)
            .concat(this.rakeBack);
        } else {
          this.columnsInstal2 = this.columnsInstalM.slice(0, 4);
        }
        if (data.length === 2) {
          this.columnsInstal2 = this.columnsInstalM
            .slice(0, 4)
            .concat(this.rakeBack)
            .concat(this.member);
        }
      }
    },
    // 添加优惠券
    addCoupon() {
      this.$refs.couponTemplates.isTemplate = true;
      this.$refs.couponTemplates.tableList();
    },
    //对象数组去重；
    unique(arr) {
      const res = new Map();
      return arr.filter((arr) => !res.has(arr.id) && res.set(arr.id, 1));
    },
    nameId(id, names) {
      this.formValidate.coupon_ids = id;
      this.couponName = this.unique(names);
    },
    handleClose(name) {
      let index = this.couponName.indexOf(name);
      this.couponName.splice(index, 1);
      let couponIds = this.formValidate.coupon_ids;
      couponIds.splice(index, 1);
      this.updateIds = couponIds;
      this.updateName = this.couponName;
    },
    // 运费模板
    getList() {
      this.productGetTemplate();
    },
    // 添加运费模板
    addTemp() {
      this.$refs.templates.isTemplate = true;
    },
    // 删除视频；
    delVideo() {
      let that = this;
      that.$set(that.formValidate, 'video_link', '');
      that.$set(that, 'progress', 0);
      that.videoIng = false;
      that.upload.videoIng = false;
      that.$refs.refid.value = '';
    },
    zh_uploadFile() {
      if (this.seletVideo == 1) {
        if (this.videoLink && this.$getFileType(this.videoLink) == 'video') {
          this.formValidate.video_link = this.videoLink;
        } else {
          return this.$Message.error('请输入正确的视频链接');
        }
      } else {
        this.$refs.refid.click();
      }
    },
    zh_uploadFile_change(evfile) {
      let that = this;
      let suffix = evfile.target.files[0].name.substr(
        evfile.target.files[0].name.indexOf('.')
      );
      if (suffix.indexOf('.mp4') === -1) {
        return that.$Message.error('只能上传MP4文件');
      }
	  let types = {
		key: evfile.target.files[0].name,
		contentType: evfile.target.files[0].type,
	  };
      productGetTempKeysApi(types)
        .then((res) => {
          that.$videoCloud
            .videoUpload({
              type: res.data.type,
              evfile: evfile,
              res: res,
              uploading(status, progress) {
                that.upload.videoIng = status;
                if (res.status == 200) {
                  that.progress = 100;
                }
              },
            })
            .then((res) => {
              that.formValidate.video_link = res.url;
              that.$Message.success('视频上传成功');
              that.upload.videoIng = false;
            })
            .catch((res) => {
              that.$Message.error(res);
            });
        })
        .catch((res) => {
          that.$Message.error(res.msg);
        });
    },
    // 上一页；
    upTab() {
      if (this.currentTab == 5 && this.formValidate.product_type != 0) {
        this.currentTab = (Number(this.currentTab) - 2).toString();
      } else {
        this.currentTab = (Number(this.currentTab) - 1).toString();
      }
    },
    // 下一页；
    downTab(name) {
      this.$refs[name].validate((valid) => {
        if (valid) {
          if (
            this.formValidate.is_show == 2 &&
            !this.formValidate.auto_on_time
          ) {
            return this.$Message.warning('请填写定时上架时间');
          }
          if (this.off_show == 1 && !this.formValidate.auto_off_time) {
            return this.$Message.warning('请填写定时下架时间');
          }
          if (this.currentTab == 4 && !this.formValidate.delivery_type.length) {
            return this.$Message.warning('请选择配送方式');
          }
          if (this.currentTab == 3 && this.formValidate.product_type != 0) {
            this.currentTab = (Number(this.currentTab) + 2).toString();
          } else {
            this.currentTab = (Number(this.currentTab) + 1).toString();
          }
        } else {
          this.$Message.warning('请完善数据');
        }
      });
    },
    // 属性弹窗回调函数；
    userSearchs() {
      this.productGetRule();
    },
    // 添加规则；
    addRule() {
      this.$refs.addattr.modal = true;
    },
    // 批量设置分佣；
    brokerageSetUp() {
      let that = this;
      if (that.formValidate.is_sub.indexOf(1) > -1) {
        if (that.manyBrokerage <= 0 || that.manyBrokerageTwo <= 0) {
          return that.$Message.error('请填写返佣金额后进行批量添加');
        }
      } else if (that.formValidate.is_sub.indexOf(0) > -1) {
        if (that.manyVipPrice <= 0) {
          return that.$Message.error('请填写会员价后进行批量添加');
        }
      }
      if (this.formValidate.is_sub.length === 2) {
        if (
          that.manyBrokerage <= 0 ||
          that.manyBrokerageTwo <= 0 ||
          that.manyVipPrice <= 0
        ) {
          return that.$Message.error('请填写完金额后进行批量添加');
        }
      }
      for (let val of that.manyFormValidate) {
        this.$set(val, 'brokerage', that.manyBrokerage);
        this.$set(val, 'brokerage_two', that.manyBrokerageTwo);
        this.$set(val, 'vip_price', that.manyVipPrice);
      }
      // let that = this;
      // if (that.manyBrokerage <= 0 || that.manyBrokerageTwo <= 0) {
      //     return that.$Message.error('请填写返佣金额在进行批量添加');
      // } else {
      //     for (let val of that.manyFormValidate) {
      //         this.$set(val, 'brokerage', that.manyBrokerage);
      //         this.$set(val, 'brokerage_two', that.manyBrokerageTwo);
      //     }
      // }
    },
    // 批量设置会员价
    vipPriceSetUp() {
      let that = this;
      if (that.manyVipPrice <= 0) {
        return that.$Message.error('请填写会员价在进行批量添加');
      } else {
        for (let val of that.manyFormValidate) {
          this.$set(val, 'vip_price', that.manyVipPrice);
        }
      }
    },
    batchDel() {
      this.oneFormBatch = [
        {
          attr: '全部',
          pic: '',
          price: 0,
		  settle_price: 0,
          cost: 0,
          ot_price: 0,
          stock: 0,
          bar_code: '',
          code: '',
          weight: 0,
          volume: 0,
          virtualList: [],
          disk_info: '',
        },
      ];
      this.activeAtter = [];
      for (let val of this.manyFormValidate) {
        val.select = true;
      }
    },
    confirm() {
      let that = this;
      that.createBnt = true;
      if (that.formValidate.selectRule.trim().length <= 0) {
        return that.$Message.error('请选择属性');
      }
      that.ruleList.forEach(function (item, index) {
        if (item.rule_name === that.formValidate.selectRule) {
          that.attrs = item.rule_value;
        }
      });
    },
    // 获取商品属性模板；
    productGetRule() {
      productGetRuleApi().then((res) => {
        this.ruleList = res.data;
      });
    },
    // 获取运费模板；
    productGetTemplate() {
      productGetTemplateApi({id:this.productId}).then((res) => {
        this.templateList = res.data;
      });
    },
    // 删除表格中的属性
    delAttrTable(index) {
      let id = this.productId;
      if (id) {
        checkActivityApi(id)
          .then((res) => {
            this.manyFormValidate.splice(index, 1);
            this.$Message.success(res.msg);
          })
          .catch((res) => {
            this.$Message.error(res.msg);
          });
      } else {
        this.manyFormValidate.splice(index, 1);
      }
    },
    // 批量添加
    batchAdd() {
      for (let val of this.manyFormValidate) {
        //this.manyEmpty(val);
        if (val.select) {
          if (this.oneFormBatch[0].pic) {
            this.$set(val, 'pic', this.oneFormBatch[0].pic);
          }
          if (this.oneFormBatch[0].price > 0) {
            this.$set(val, 'price', this.oneFormBatch[0].price);
          }
		  if (this.oneFormBatch[0].settle_price > 0 && this.merchantType == 2) {
			this.$set(val, "settle_price", this.oneFormBatch[0].settle_price);
		  }
          if (this.oneFormBatch[0].cost > 0) {
            this.$set(val, 'cost', this.oneFormBatch[0].cost);
          }
          if (this.oneFormBatch[0].ot_price > 0) {
            this.$set(val, 'ot_price', this.oneFormBatch[0].ot_price);
          }
          if (this.oneFormBatch[0].stock > 0) {
            this.$set(val, 'stock', this.oneFormBatch[0].stock);
          }
          if (this.oneFormBatch[0].bar_code !== '') {
            this.$set(val, 'bar_code', this.oneFormBatch[0].bar_code);
          }
          if (this.oneFormBatch[0].code !== '') {
            this.$set(val, 'code', this.oneFormBatch[0].code);
          }
          if (this.oneFormBatch[0].weight > 0) {
            this.$set(val, 'weight', this.oneFormBatch[0].weight);
          }
          if (this.oneFormBatch[0].volume > 0) {
            this.$set(val, 'volume', this.oneFormBatch[0].volume);
          }
          if (this.formValidate.product_type == 1) {
            if (
              this.oneFormBatch[0].virtual_list &&
              this.oneFormBatch[0].virtual_list.length
            ) {
              this.$set(val, 'virtual_list', this.oneFormBatch[0].virtual_list);
            } else if (this.oneFormBatch[0].disk_info) {
              this.$refs.addCarMy.cartMyType = 1;
              this.$set(val, 'disk_info', this.oneFormBatch[0].disk_info);
            }
          }
        }
      }
    },
    // 添加按钮
    addBtn() {
      let id = this.productId;
      if (id) {
        checkActivityApi(id)
          .then((res) => {
            this.clearAttr();
            this.createBnt = false;
            this.showIput = true;
          })
          .catch((res) => {
            this.$Message.error(res.msg);
          });
      }
    },
    addmanyData(data) {
      data.forEach((item) => {
        item.select = true;
      });
      this.manyFormValidate = data;
    },
    // 立即生成
    generate(type) {
      generateAttrApi(
        { attrs: this.attrs, product_type: this.formValidate.product_type },
        this.formValidate.id,
        type
      )
        .then((res) => {
          let info = res.data.info,
            header1 = JSON.parse(JSON.stringify(info.header));
          if (this.productId !== '0') {
            this.addmanyData(info.value);
          }
          this.formValidate.header = header1;
          this.attrData = res.data.info.attr;
          let header = info.header;
          header.pop();
          this.columnsInstalM = info.header;
          this.checkAllGroup(this.formValidate.is_sub);
          if (!this.productId && this.formValidate.spec_type === 1) {
            this.manyFormValidate.map((item) => {
              item.pic = this.formValidate.slider_image[0];
            });
            this.oneFormBatch[0].pic = this.formValidate.slider_image[0];
          } else if (this.productId) {
            this.manyFormValidate.map((item) => {
              if (!item.pic) {
                item.pic = this.formValidate.slider_image[0];
              }
            });
            this.oneFormBatch[0].pic = this.formValidate.slider_image[0];
          }
          this.getAttr();
        })
        .catch((res) => {
          this.$Message.error(res.msg);
        });
    },
    // 取消
    offAttrName() {
      this.showIput = false;
      this.createBnt = true;
    },
    clearAttr() {
      this.formDynamic.attrsName = '';
      this.formDynamic.attrsVal = '';
    },
    // 删除规格
    handleRemoveRole(index) {
      this.attrs.splice(index, 1);
      this.manyFormValidate.splice(index, 1);
    },
    // 删除属性
    handleRemove2(item, index) {
      item.splice(index, 1);
    },
    // 添加规则名称
    createAttrName() {
      if (this.formDynamic.attrsName && this.formDynamic.attrsVal) {
        let data = {
          value: this.formDynamic.attrsName,
          detail: [this.formDynamic.attrsVal],
        };
        this.attrs.push(data);
        var hash = {};
        this.attrs = this.attrs.reduce(function (item, next) {
          /* eslint-disable */
          hash[next.value] ? '' : (hash[next.value] = true && item.push(next));
          return item;
        }, []);
        this.clearAttr();
        this.showIput = false;
        this.createBnt = true;
      } else {
        this.$Message.warning('请添加完整的规格！');
      }
    },
    // 添加属性
    createAttr(num, idx) {
      if (num) {
        this.attrs[idx].detail.push(num);
        var hash = {};
        this.attrs[idx].detail = this.attrs[idx].detail.reduce(function (
          item,
          next
        ) {
          /* eslint-disable */
          hash[next] ? '' : (hash[next] = true && item.push(next));
          return item;
        },
          []);
      } else {
        this.$Message.warning('请添加属性');
      }
    },
    // 商品分类；
    goodsCategory() {
      cascaderListApi(1)
        .then((res) => {
          this.treeSelect = res.data;
        })
        .catch((res) => {
          this.$Message.error(res.msg);
        });
    },
    //视视上传类型
    changeVideo(e) {
      this.formValidate.video_link = '';
      this.videoLink = '';
    },
    // 改变规格
    changeSpec() {
      this.formValidate.is_sub = [];
      let id = this.productId;
      if (id) {
        checkActivityApi(id)
          .then((res) => { })
          .catch((res) => {
            this.formValidate.spec_type = this.spec_type;
            this.$Message.error(res.msg);
          });
      }
    },
    // 详情
    getInfo() {
      let that = this;
      that.spinShow = true;
      productInfoApi(that.productId || this.$route.query.copy)
        .then(async (res) => {
          let data = res.data.productInfo;
		  this.merchantType = parseInt(data.type);
		  if(this.merchantType == 2){
			let obj = {
				  title: "结算价",
				  slot: "settle_price",
				  align: "center",
				  minWidth: 95,
				}
			this.columns2.splice(3,0,obj)
		  }
          this.infoData(data);
          // let cate_id = data.cate_id.map(Number);
          // let label_id = data.label_id.map(Number);
          // this.attrs = data.items || [];
          // let ids = [];
          // data.coupons.map((item) => {
          //   ids.push(item.id);
          // });
          // that.formValidate = data;
          // that.couponName = data.coupons;
          // that.formValidate.coupon_ids = ids;
          // that.updateIds = ids;
          // that.updateName = data.coupons;
          // that.formValidate.cate_id = cate_id;
          // that.formValidate.label_id = label_id;
          // that.oneFormValidate = [data.attr];
          // that.formValidate.header = [];
          // that.manyFormValidate = data.attrs;
          // that.generate(0);
          // that.spec_type = data.spec_type;
          // if (data.spec_type === 0) {
          //   that.manyFormValidate = [];
          // } else {
          //   that.createBnt = true;
          //   that.oneFormValidate = [
          //     {
          //       pic: data.image,
          //       price: 0,
          //       cost: 0,
          //       ot_price: 0,
          //       stock: 0,
          //       bar_code: "",
          //       weight: 0,
          //       volume: 0,
          //       brokerage: 0,
          //       brokerage_two: 0,
          //       vip_price: 0,
          //     },
          //   ];
          // }
          this.spinShow = false;
        })
        .catch((res) => {
          this.spinShow = false;
          this.$Message.error(res.msg);
        });
    },
    // tab切换
    onhangeTab(name) {
      this.currentTab = name;
    },
    handleRemove(i) {
      this.images.splice(i, 1);
      this.formValidate.slider_image.splice(i, 1);
      this.oneFormValidate[0].pic = this.formValidate.slider_image[0];
    },
    // 关闭图片上传模态框
    changeCancel(msg) {
      this.modalPic = false;
    },
    // 点击商品图
    modalPicTap(tit, picTit, index) {
      this.modalPic = true;
      this.isChoice = tit === 'dan' ? '单选' : '多选';
      this.picTit = picTit;
      this.tableIndex = index;
    },
    // 获取单张图片信息
    getPic(pc) {
      switch (this.picTit) {
        case 'danFrom':
          this.formValidate.image = pc.att_dir;
          if (!this.productId) {
            if (this.formValidate.spec_type === 0) {
              this.oneFormValidate[0].pic = pc.att_dir;
            } else {
              this.manyFormValidate.map((item) => {
                item.pic = pc.att_dir;
              });
              this.oneFormBatch[0].pic = pc.att_dir;
            }
          }
          break;
        case 'danTable':
          this.oneFormValidate[this.tableIndex].pic = pc.att_dir;
          break;
        case 'duopi':
          this.oneFormBatch[this.tableIndex].pic = pc.att_dir;
          break;
        case 'recommend_image':
          this.formValidate.recommend_image = pc.att_dir;
          break;
        default:
          this.manyFormValidate[this.tableIndex].pic = pc.att_dir;
      }
      this.modalPic = false;
    },
    // 获取多张图信息
    getPicD(pc) {
      this.images = pc;
      this.images.map((item) => {
        this.formValidate.slider_image.push(item.att_dir);
        this.formValidate.slider_image = this.formValidate.slider_image.splice(
          0,
          10
        );
      });
      this.oneFormValidate[0].pic = this.formValidate.slider_image[0];
      this.modalPic = false;
    },
    // 提交
    handleSubmit(name) {
      this.$refs[name].validate((valid) => {
        if (valid) {
          if (!this.formValidate.store_name.trim()) {
            return this.$Message.warning('基础信息-商品名称不能为空');
          }
          if (
            this.formValidate.is_show == 2 &&
            !this.formValidate.auto_on_time
          ) {
            return this.$Message.warning('基础信息-定时上架时间不能为空');
          }
          if (this.off_show == 1 && !this.formValidate.auto_off_time) {
            return this.$Message.warning('基础信息-定时下架时间不能为空');
          }
		  if(this.formValidate.product_type == 4 && !this.oneFormValidate[0].write_times){
			  return this.$Message.warning("规格库存-核销次数必须大于0");
		  }
		  if(this.formValidate.product_type == 4 && this.oneFormValidate[0].write_valid==2 && !this.oneFormValidate[0].days){
		    return this.$Message.warning("规格库存-有效天数必须大于0");
		  }
		  if(this.formValidate.product_type == 4 && this.oneFormValidate[0].write_valid==3 && !this.oneFormValidate[0].section_time.length){
		    return this.$Message.warning("规格库存-请输入固定有效期");
		  }
          if (
            this.formValidate.freight == 2 &&
            this.formValidate.product_type == 0 &&
            this.formValidate.postage <= 0
          ) {
            return this.$Message.warning('物流设置-固定邮费不能为0');
          }
          if (
            this.formValidate.freight == 3 &&
            this.formValidate.product_type == 0 &&
            !this.formValidate.temp_id
          ) {
            return this.$Message.warning('物流设置-运费模板不能为空');
          }
          if (
            this.formValidate.product_type == 0 &&
            this.formValidate.is_presale_product &&
            !this.formValidate.presale_time[0]
          ) {
            return this.$Message.warning('营销设置-预售时间不能为空');
          }
          // for (let i = 0; i < this.formValidate.custom_form.length; i++) {
          //   const element = this.formValidate.custom_form[i];
          //   if (!element.title) {
          //     return this.$Message.warning('其他设置-留言标题不能为空');
          //   }
          // }
		  if(this.customBtn && this.formValidate.system_form_id == 0){
			  return this.$Message.warning('其他设置-请选择自定义表单模板');
		  }
          this.formValidate.type = this.type;
          if (this.formValidate.spec_type === 0) {
            this.formValidate.attrs = this.oneFormValidate;
            this.formValidate.header = [];
            this.formValidate.items = [];
          } else {
            this.formValidate.items = this.attrs;
            this.formValidate.attrs = this.manyFormValidate;
          }
          if (
            this.formValidate.spec_type === 1 &&
            this.manyFormValidate.length === 0
          ) {
            return this.$Message.warning('规格库存-请点击生成多规格');
            // return this.$Message.warning('请点击生成规格！');
          }
          let item = this.formValidate.attrs;
          if (this.formValidate.is_sub.indexOf(1) != -1) {
            for (let i = 0; i < item.length; i++) {
              if (
                item[i].brokerage === null ||
                item[i].brokerage_two === null
              ) {
                return this.$Message.warning('营销设置- 一二级返佣不能为空');
              }
            }
          }
          if (this.formValidate.is_sub.indexOf(0) != -1) {
            for (let i = 0; i < item.length; i++) {
              if (item[i].vip_price === null) {
                return this.$Message.warning('营销设置-会员价不能为空');
              }
              if (item[i].vip_price === 0) {
                return this.$Message.warning('营销设置-会员价不能为0');
              }
            }
          }
          if (this.formValidate.is_sub.length === 2) {
            for (let i = 0; i < item.length; i++) {
              if (
                item[i].brokerage === null ||
                item[i].brokerage_two === null ||
                item[i].vip_price === null
              ) {
                return this.$Message.error(
                  '营销设置- 一二级返佣和会员价不能为空'
                );
              }
            }
          }
          for (let i = 0; i < this.specsList.length; i++) {
            let data = this.specsList[i];
            if (!data.name.trim()) {
              return this.$Message.error('请输入参数名称');
            }
            if (!data.value.trim()) {
              return this.$Message.error('请输入参数值');
            }
          }
          if (!this.formValidate.product_type) {
            this.formValidate.is_support_refund = 1;
          }
          this.openSubimit = false;
          this.formValidate.description = this.formatRichText(this.content);
          let goodsId = [];
          this.goodsData.forEach((item) => {
            goodsId.push(item.product_id);
          });
          this.formValidate.recommend_list = goodsId;
          // 用户标签
          let activeIds = [];
          this.dataLabel.forEach((item) => {
            activeIds.push(item.id);
          });
          this.formValidate.label_id = activeIds;
          // 商品标签
          let storeActiveIds = [];
          this.storeDataLabel.forEach((item) => {
            storeActiveIds.push(item.id);
          });
          this.formValidate.store_label_id = storeActiveIds;
          // 商品参数
          this.formValidate.specs = this.specsList;
          if (this.$route.query.copy) {
            this.formValidate.id = 0;
            this.formValidate.soure_link = '';
          }
		  if(this.formValidate.product_type == 4){
			this.formValidate.delivery_type = 2
		  }
          productAddApi(this.formValidate)
            .then(async (res) => {
              this.openSubimit = true;
              this.$Message.success(res.msg);
              if (this.productId === '0') {
                cacheDelete().catch((err) => {
                  this.$Message.error(err.msg);
                });
              }
              // setTimeout(() => {
              //   this.$router.push({ path: '/admin/product/product_list' });
              // }, 500);
              this.$emit('saved');
            })
            .catch((res) => {
              this.openSubimit = false;
              this.$Message.error(res.msg);
            });
        } else {
          if (!this.formValidate.store_name) {
            return this.$Message.warning('基础信息-商品名称不能为空');
          } else if (!this.formValidate.cate_id.length) {
            return this.$Message.warning('基础信息-商品分类不能为空');
          } else if (!this.formValidate.unit_name) {
            return this.$Message.warning('基础信息-商品单位不能为空');
          } else if (!this.formValidate.slider_image.length) {
            return this.$Message.warning('基础信息-商品轮播图不能为空');
          }
          //    if(!this.formValidate.store_name || !this.formValidate.cate_id || !this.formValidate.keyword
          //    || !this.formValidate.unit_name || !this.formValidate.store_info
          //        || !this.formValidate.image || !this.formValidate.slider_image){
          //        this.$Message.warning("请填写完整商品信息！");
          //    }
        }
      });
    },
    changeTemplate(msg) {
      this.template = msg;
    },
    // 表单验证
    validate(prop, status, error) {
      if (status === false) {
        this.$Message.warning(error);
      }
    },
    // 移动
    handleDragStart(e, item) {
      this.dragging = item;
    },
    handleDragEnd(e, item) {
      this.dragging = null;
    },
    handleDragOver(e) {
      e.dataTransfer.dropEffect = 'move';
    },
    handleDragEnter(e, item) {
      e.dataTransfer.effectAllowed = 'move';
      if (item === this.dragging) {
        return;
      }
      const newItems = [...this.formValidate.slider_image];
      const src = newItems.indexOf(this.dragging);
      const dst = newItems.indexOf(item);
      newItems.splice(dst, 0, ...newItems.splice(src, 1));
      this.formValidate.slider_image = newItems;
    },
    // 添加自定义弹窗
    addCustomDialog(editorId) {
      window.UE.registerUI(
        'test-dialog',
        function (editor, uiName) {
          // 创建 dialog
          let dialog = new window.UE.ui.Dialog({
            iframeUrl: '/admin/widget.images/index.html?fodder=dialog',
            editor: editor,
            name: uiName,
            title: '上传图片',
            cssRules: 'width:1200px;height:500px;padding:20px;',
          });
          this.dialog = dialog;
          let btn = new window.UE.ui.Button({
            name: 'dialog-button',
            title: '上传图片',
            cssRules: `background-image: url(https://cdn.oss.9gt.net/prov1.1/1/icons.png);background-position: -726px -77px;`,
            onclick: function () {
              // 渲染dialog
              dialog.render();
              dialog.open();
            },
          });
          return btn;
        },
        37
      );
      window.UE.registerUI(
        'video-dialog',
        function (editor, uiName) {
          let dialog = new window.UE.ui.Dialog({
            iframeUrl: '/admin/widget.video/index.html?fodder=video',
            editor: editor,
            name: uiName,
            title: '上传视频',
            cssRules: 'width:1000px;height:500px;padding:20px;',
          });
          this.dialog = dialog;
          let btn = new window.UE.ui.Button({
            name: 'video-button',
            title: '上传视频',
            cssRules: `background-image: url(../../../assets/images/icons.png);background-position: -320px -20px;`,
            onclick: function () {
              // 渲染dialog
              dialog.render();
              dialog.open();
            },
          });
          return btn;
        },
        38
      );
    },
    formatRichText(html) {
      let newContent = html.replace(/<img[^>]*>/gi, function (match, capture) {
        match = match
          .replace(/style="[^"]+"/gi, '')
          .replace(/style='[^']+'/gi, '');
        match = match
          .replace(/width="[^"]+"/gi, '')
          .replace(/width='[^']+'/gi, '');
        match = match
          .replace(/height="[^"]+"/gi, '')
          .replace(/height='[^']+'/gi, '');
        return match;
      });
      newContent = newContent.replace(
        /style="[^"]+"/gi,
        function (match, capture) {
          match = match
            .replace(/width:[^;]+;/gi, 'max-width:100%;')
            .replace(/width:[^;]+;/gi, 'max-width:100%;');
          return match;
        }
      );
      // newContent = newContent.replace(/<br[^>]*\/>/gi, '');
      newContent = newContent.replace(
        /\<img/gi,
        '<img style="max-width:100%;height:auto;display:block;margin-top:0;margin-bottom:0;"'
      );
      return newContent;
    },
    drawerChange(e) {
      if (e) {
        this.currentTab = '1';
        this.type = 0;
        this.getInfo();
        this.getReplyList();
        this.goodsCategory();
        this.productGetRule();
        this.productGetTemplate();
        this.getBrandList();
        this.getAllUnit();
        this.uploadType();
        this.getProductAllEnsure();
        this.getProductAllSpecs();
        this.allFormList();
      } else {
        this.$emit('update:visible', false);
        this.oneFormBatch = [
          {
            attr: '全部',
            pic: '',
            price: 0,
            cost: 0,
            ot_price: 0,
            stock: 0,
            bar_code: '',
            code: '',
            weight: 0,
            volume: 0,
          }
        ]
      }
    },
    // 查看评论列表
    seeReply(row) {
      this.$refs.replyList.modals = true;
      this.$refs.replyList.getList(row.id);
    },
    // 回复评论
    reply(row) {
      this.replyModal = true;
      this.rows = row;
      this.replyForm.content = row.replyComment ? row.replyComment.content : '';
    },
    // 删除评论
    delReply(row, tit, num) {
      let delfromData = {
        title: tit,
        num: num,
        url: `product/reply/${row.id}`,
        method: 'DELETE',
        ids: '',
      };
      this.$modalSure(delfromData)
        .then((res) => {
          this.$Message.success(res.msg);
          this.replyData.splice(num, 1);
        })
        .catch((res) => {
          this.$Message.error(res.msg);
        });
    },
    cancels() {
      this.replyModal = false;
      this.$refs['replyForm'].resetFields();
    },
    oks() {
      this.replyModal = true;
      this.$refs['replyForm'].validate((valid) => {
        if (valid) {
          setReplyApi(this.replyForm, this.rows.id)
            .then(async (res) => {
              this.$Message.success(res.msg);
              this.replyModal = false;
              this.$refs['replyForm'].resetFields();
              this.getReplyList();
            })
            .catch((res) => {
              this.$Message.error(res.msg);
            });
        } else {
          return false;
        }
      });
    },
    // 商品评论
    getReplyList() {
      this.replyLoading = true;
      // this.formValidate.is_reply = this.formValidate.is_reply || "";
      // this.formValidate.store_name = this.formValidate.store_name || "";
      this.replyValidate.product_id = this.productId;
      replyListApi(this.replyValidate)
        .then(async (res) => {
          let data = res.data;
          this.replyData = data.list;
          this.total = res.data.count;
          this.replyLoading = false;
        })
        .catch((res) => {
          this.replyLoading = false;
          this.$Message.error(res.msg);
        });
    },
  },
};
</script>

<style lang="stylus" scoped>
.specsList{
  /deep/.ivu-table th{
    padding 0 !important
  }
  /deep/.ivu-table-cell{
    padding 5px !important
  }
  &.on{
    width 50% !important;
    /deep/.ivu-table{
      width 100% !important;
    }
    /deep/.ivu-table table{
      width 100% !important;
    }
    /deep/.ivu-table td{
      height 40px;
      padding 0 !important;
    }
    /deep/.ivu-table-cell{
      padding 0 16px !important;
    }
  }
}
.asterisk{
  position relative;
  .asteriskInfo{
    position absolute;
    color #ed4014;
    left 73px;
    top 5px;
    font-size 20px;
    &.on{
      left:62px;
    }
    &.on2{
      left:54px;
    }
  }
}                                        
/deep/.ivu-drawer-close{
  right: 30px;
}
.iview-video-style {
  width: 40%;
  height: 180px;
  border-radius: 10px;
  background-color: #707070;
  position: relative;
  overflow: hidden;
  .video-style{
    width: 100%;
    height: 100%;
  }
}

.iview-video-style .iconv {
  color: #fff;
  line-height: 180px;
  width: 50px;
  height: 50px;
  display: inherit;
  font-size: 26px;
  position: absolute;
  top: -74px;
  left: 50%;
  margin-left: -25px;
}

.iview-video-style .mark {
  position: absolute;
  width: 100%;
  height: 30px;
  top: 0;
  background-color: rgba(0, 0, 0, 0.5);
  text-align: center;
}
.ivu-mt{
  margin: 0 auto!important;
}
.header {
  display: flex;
  align-items: center;
  padding: 30px 0 25px 25px;
  font-size: 13px;
  color: #606266;

  .iconfont {
    margin-right: 12px;
    color: #2D8CF0;
  }

  .title {
    font-weight: 500;
    font-size: 16px;
    color: #000000;
  }
}

.ivu-tabs {
  >>>.ivu-tabs-bar {
    border-bottom: 0;
    margin-bottom: 30px;
    background-color: #F5F7FA;
  }

  >>>.ivu-tabs-tab {
    height: 40px;
    padding: 0 20px;
    font-size: 13px;
    line-height: 40px;
    color: #000000;

    &:hover {
      color: #000000 !important;
    }
  }

  >>>.ivu-tabs-tab-active {
    background-color: #FFFFFF;
  }

  >>>.ivu-tabs-ink-bar {
    top: 0;
    bottom: auto;
  }

  .ivu-tabs-tabpane {
    padding: 0 24px;
  }
}

.ivu-form {
  >>>.ivu-form-item-label {
    padding: 10px 6px 10px 0;
  }
}

>>>.pictrue {
  position: relative;
  display: inline-block;
  width: 60px;
  height: 60px;
  border: 1px dotted rgba(0, 0, 0, 0.1);
  margin: 0 15px 10px 0;
  cursor: pointer;

  img {
    width: 100%;
    height: 100%;
  }

  .btndel {
    position: absolute;
    top: -4px;
    left: 46px;
    width: 20px;
    height: 20px;
    z-index: 1;
  }
}

>>>.upLoad {
  width: 58px;
  height: 58px;
  border: 1px dotted rgba(0, 0, 0, 0.1);
  border-radius: 4px;
  background-color: rgba(0, 0, 0, 0.02);
  line-height: 58px;
  cursor: pointer;
}

.input-display {
  display: none;
}

.ifam {
  width: 344px;
  height: 644px;
  background: url('../../../assets/images/phonebg.png') no-repeat center top;
  background-size: 344px 644px;
  padding: 40px 20px;
  padding-top: 50px;

  .content {
    height: 560px;
    overflow: hidden;
    scrollbar-width: none; /* firefox */
    -ms-overflow-style: none; /* IE 10+ */
    overflow-x: hidden;
    overflow-y: auto;
  }
}

.videbox {
  width: 60px;
  height: 60px;
  background: rgba(0, 0, 0, 0.02);
  border-radius: 4px;
  border: 1px dashed #ddd;
  line-height: 50px;
  text-align: center;
  color: #898989;
  font-size: 30px;
  font-weight: 400;
  cursor: pointer;
}
.drawer-footer {
  position fixed
  right 0
  bottom 0
  z-index 2
  width 1000px
  padding 13px
  border-top 1px solid #EEEEEE
  background-color #FFFFFF
  text-align center
}
.labelInput{
    position: relative;
    border: 1px solid #dcdee2;
    width: 50%;
    border-radius: 4px;
    min-height: 32px;
    padding-right: 24px;
    padding-left: 8px;
    cursor: pointer;

    >div{
      flex: 1;
      min-height: 30px;
      padding-right: 24px;
      padding-left: 8px;
      font-size: 0;
      line-height: 30px;

      .span {
        vertical-align: middle;
        font-size: 12px;
        color: #c5c8ce;
      }
    }

    .ivu-icon {
      position: absolute;
      top: 50%;
      right: 8px;
      transform: translateY(-50%);
      font-size: 14px;
      line-height: 1;
      color: #808695;
    }
}
.color-list .color-item{
  width: 70px;
  height: 28px;
  line-height: 28px;
  color: #fff;
  margin-right: 10px;
  border-radius: 2px;
  text-align: center;
}
.color-list .color-item.colorBlue{
  background: linear-gradient(270deg, #5ecfff 0%, #0084ff 100%);
}
.color-list .color-item .num{
  color: #1890ff;
    width: 14px;
    height: 14px;
    text-align: center;
    line-height: 14px;
    border-radius: 50%;
    background-color: #fff;
    margin-right: 6px;
}
.addCustom_content{
  margin-top: 20px;
}
.addCustom_content .custom_box{
  margin-bottom: 10px;
}
.custom-input{
  width: 100px;
    margin-right: 10px;
}
.ivu-checkbox-wrapper{
  margin-right: 19px;
}
.addCustom_content .addfont{
  display: inline-block;
  font-size: 13px;
  font-weight: 400;
  color: #1890ff;
  cursor: pointer;
}
.select-add{
  width: 200px;
    margin-left: 6px;
    margin-right: 10px;
}
.addCustomBox{
  margin-top: 12px;
  font-size: 13px;
  font-weight: 400;
  color: #1890ff;
}
.addCustomBox .btn{
  cursor: pointer;
    width: max-content;
}
.addCustomBox .tips{
  display: inline-bolck;
    font-size: 12px;
    font-weight: 400;
    color: #999;
    margin-top: 14px;
}
>>>.wang-editor {
  margin-left: 20px;
}
</style>
